大神帮我帮我看看为什么关闭窗口监控器不能调用

qq_38296678 2017-04-26 05:53:33
package drow;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;

public class DrowDemo {
private final String RECT_SHAPE = "rect";
private final String OVAL_SHAPE = "oval";
private Frame f = new Frame("画图窗口");
private Button rect = new Button("绘制矩形");
private Button oval = new Button("绘制圆形");
private String shape = "";
private MyCanvas canvas = new MyCanvas();

public void init() {
Panel p = new Panel();
rect.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
shape = RECT_SHAPE;
canvas.repaint();
}
});
oval.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
shape = OVAL_SHAPE;
canvas.repaint();

}
});
p.add(rect);
p.add(oval);
canvas.setPreferredSize(new Dimension(250, 180));
f.addWindowListener(new WindowAdapter() {

/*
* (non-Javadoc)
*
* @see
* java.awt.event.WindowAdapter#windowClosed(java.awt.event.WindowEvent
* )
*/
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
System.out.println("close...");
System.exit(0);
}

});
f.add(canvas);
f.add(p, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}

public static void main(String[] args) {
new DrowDemo().init();

}

class MyCanvas extends Canvas {

/*
* (non-Javadoc)
*
* @see java.awt.Canvas#paint(java.awt.Graphics)
*/
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
Random ran = new Random();
if (shape.equals(RECT_SHAPE)) {
g.setColor(new Color(150, 100, 80));
g.drawRect(ran.nextInt(200), ran.nextInt(120), 60, 60);
}
if (shape.equals(OVAL_SHAPE)) {
g.setColor(new Color(89, 140, 210));
g.fillOval(ran.nextInt(250), ran.nextInt(180), 70, 45);
}
}

}
}
...全文
99 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_38296678 2017-04-26
  • 打赏
  • 举报
回复
找到原因了。public void windowClosed(WindowEvent e) 改为public void windowClosing(WindowEvent e)就行了

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧