java - 如何处理 AWT 框架中的关闭按钮
问题描述
我从一些基本的 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 框架:
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 下。
解决方案
您没有MyChart
在主类中调用该函数。下面的代码工作正常。
public class Test {
public static void main( String[] args ) {
System.out.println("Terminal Group");
MyChart terminal = new MyChart();
terminal.MyChart();//I added this.
terminal.setTitle("The first Java 2D program");
terminal.setSize(350,80);
terminal.setVisible(true);
}
}
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);
};
}
推荐阅读
- c++ - 制作两个重量至少为 k 的袋子所需的最少元素数?
- python - 月/年字符串的 dateutil 解析器
- arrays - 使用递归检查数组是否升序
- python - 返回内存位置而不是字符串
- html - 为什么滚动行为在我的手机上不起作用?
- discord.js - 当我检查成员角色时,“无法读取未定义的属性‘缓存’”
- java - 如何将两个程序组合在一个班级中
- java - 如何从 ArrayList 中的特定索引更新元素
- php - 尝试在functions.php Wordpress上添加代码片段时出现致命错误
- deployment - 部署到 Netlify 一个普通的 JS 应用程序时出现问题