返回信息流import java.awt.Graphics;
import java.io.*;
import java.awt.*;
import javax.swing.*;
public class BoxFun {
public static void main(String[] args) throws IOException{
JFrame window=new JFrame("Box Fun");
window.setSize(200, 200);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
System.out.println("Enter when ready");
System.in.read();
Graphics g= window.getGraphics();
g.setColor(Color.BLACK);
g.drawRect(80, 90, 40, 20);
}
}
为什么窗口里边总是没有显示呢??
这是一条镜像帖。来源:北邮人论坛 / java / #20552同步于 2011/10/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求助:关于java 画图问题
wanglb
2011/10/26镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
public class BoxFun {
public static void main(String[] args) throws IOException{
JFrame window = new JFrame("Box Fun") {
@Override
public void paint(Graphics g) {
g.setColor(Color.BLACK);
g.drawRect(80, 90, 40, 20);
}
};
window.setSize(200, 200);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
System.out.println("Enter when ready");
System.in.read();
}
}
【 在 GacktCamui 的大作中提到: 】
: public class BoxFun {
:
: public static void main(String[] args) throws IOException{
: ...................
LS能解释一下上边代码有什么问题吗?
我这里暂时没awt的源码,跟不到public void paint(Graphics g)里的g具体是怎么从WFramePeer里取到的,但应该是默认没有经过修改的Graphics,而不是被你改过的那个。
窗体在显示、隐藏、放大、缩小等有任何变化时都会引起重绘,其实你的黑框是画成功的,要是你在绘图前加上延时,等窗体出现后再画图就能看到了。当然如果你对窗体有变更,它又会被刷没。
所以一般来说要在Container上绘图都是覆盖它的paint或者paintComponent方法,所以我想都没想就改了上面的代码。
具体源码我真没跟过,等我有空了再看看。