我正在开发一个简单的GUI应用程序,它只是在画布上绘制一些图形。环境是Vista 64.当我运行程序时,Windows调整大小和最小化按钮工作,但关闭按钮不起作用。所以我必须按下Eclipse中的停止按钮才能终止该程序。
但有时我会忘记按停止,然后再次运行该程序。第一个实例卡住了,我无法在不关闭Eclipse的情况下摆脱它。如果我粗心大意,我最终会得到几个我无法关闭的java窗口。有没有办法控制和关闭窗户?另外,为什么关闭按钮不起作用?
我怀疑代码在这种情况下很重要,但现在是:
import java.awt.*;
public class RobotFace extends Canvas{
/**
* @param args
*/
public static void main(String[] args) {
RobotFace c = new RobotFace();
c.setBackground(Color.white);
c.setSize(350, 350);
Frame f = new Frame();
f.add(c);
f.setLayout(new FlowLayout());
f.setSize(350,350);
f.setVisible(true);
}
public void paint(Graphics g){
g.setColor(Color.black);
int width = 150;
int height = 200;
g.drawRect((getWidth()-width)/2, (getHeight()-height)/2, width, height);
g.setColor(Color.gray);
g.fillRect((getWidth()-width)/2, (getHeight()-height)/2, width, height);
g.setColor(Color.white);
g.fillRect((getWidth()-80)/2, (getHeight()+50)/2, 80, 20);
g.setColor(Color.yellow);
g.fillOval((getWidth()-105)/2, (getHeight()-100)/2, 30, 30);
g.fillOval((getWidth()+45)/2, (getHeight()-100)/2, 30, 30);
}
}
答案 0 :(得分:3)
你也可以使用eclips控制台杀死它,当你在eclips中打开控制台视图时,会有一个红色按钮(右侧cornor)。
打开控制台视图
窗口 - >显示视图 - >控制台
答案 1 :(得分:2)
使用这种方式可以关闭框架/窗口
//add window event adapter
f.addWindowListener(new MyWindowAdapter());
class MyWindowAdapter extends WindowAdapter{
MyWindowAdapter(){
}
//implement windowClosing method
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
答案 2 :(得分:1)
第一个应用程序实例的Eclipse控制台应该仍然可用,只是不可见。在“控制台”选项卡上,可以单击看起来像蓝色小监视器的工具栏按钮,以在应用程序实例之间切换。要停止第一个应用程序实例,您可以使用小蓝色监视器(称为“显示所选控制台”)选择该实例,然后单击“停止”按钮。
答案 3 :(得分:1)
一个选项是更改程序的行为,以便在窗口关闭时实际退出(不默认行为或Java中的框架。
Frame javadoc指定它可以生成WindowClosing事件,您可以使用它来触发应用程序关闭(使用像@Pratik这样的类在他们的答案中)。
在我看来,更好的解决方案是使用JFrame替换您的框架并使用它的方法f.setDefaultCloseOperation(EXIT_ON_CLOSE)
,以便在窗口关闭时使用exit进行应用。编写JFrame使得它应该是awt.Frame的替代品,但它是swing工具包的一部分。