【发布时间】:2019-07-31 09:35:12
【问题描述】:
我从一些基本的 Java2D 示例开始 - 特别是在 AWT 下 - 遵循“计算机图形学 Java2D/Java3D 简介”一书的第一个示例,我编写了以下两个类,一个作为“主”类:
package com.example.test;
public class Test {
public static void main( String[] args ) {
MyChart terminal = new MyChart();
terminal.setTitle("The first Java 2D program");
terminal.setSize(350,80);
terminal.setVisible(true);
}
}
还有一个扩展 AWT Frame 的:
package com.example.test;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MyChart extends Frame {
public void MyChart() {
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
dispose();
}
});
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawString("Hello world!", 30, 50);
};
}
这会在屏幕上生成预期的“Hello World”窗口,但是当我单击关闭按钮 (Windows 10) 时,什么也没有发生。我试图弄清楚我在添加侦听器时做错了什么,但没有成功。
欢迎任何提示或建议,甚至进一步调试。
如前所述,我使用的是 Java:1.8.0_191 和 Windows 10。
【问题讨论】:
-
"《计算机图形学 Java2D/Java3D 简介》一书的例子 你的意思是this book?它是在 2008 年写的!即使使用 AWT 组件(例如
Canvas) 作为游戏渲染表面,我建议将 Swing 组件用于 everything 其他。或者如我的复制/粘贴评论中所见.. 为什么使用 AWT?请参阅 this answer 有很多充分的理由放弃 AWT 组件,转而使用 Swing。