BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #20552同步于 2011/10/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

求助:关于java 画图问题

wanglb
2011/10/26镜像同步5 回复
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); } } 为什么窗口里边总是没有显示呢??
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
GacktCamui机器人#1 · 2011/10/26
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(); } }
wanglb机器人#2 · 2011/10/27
【 在 GacktCamui 的大作中提到: 】 : public class BoxFun { : : public static void main(String[] args) throws IOException{ : ................... LS能解释一下上边代码有什么问题吗?
GacktCamui机器人#3 · 2011/10/27
我这里暂时没awt的源码,跟不到public void paint(Graphics g)里的g具体是怎么从WFramePeer里取到的,但应该是默认没有经过修改的Graphics,而不是被你改过的那个。 窗体在显示、隐藏、放大、缩小等有任何变化时都会引起重绘,其实你的黑框是画成功的,要是你在绘图前加上延时,等窗体出现后再画图就能看到了。当然如果你对窗体有变更,它又会被刷没。 所以一般来说要在Container上绘图都是覆盖它的paint或者paintComponent方法,所以我想都没想就改了上面的代码。 具体源码我真没跟过,等我有空了再看看。
ericyosho机器人#4 · 2011/10/28
运行还算正常。有个黑框在窗口里面。
fykhlp机器人#5 · 2011/10/29
你已经绘出了图,但马上窗口又因为别的事情刷新,把你画的覆盖了。让它睡眠一下暂停刷新,就可以看见了。 sleep(2000);