我用Java(Eclipse)制作了一个带有面板的框架,应用程序在按下交叉按钮时不会关闭
这是我的第一个问题,如果有任何错误,请纠正我 这是代码,我试着用一个面板制作一个框架,但应用程序并没有在按下关闭按钮时退出 当我试图将默认关闭操作设置为退出时,它显示了一个错误 所以,请帮帮我我用Java(Eclipse)制作了一个带有面板的框架,应用程序在按下交叉按钮时不会关闭,java,windows,eclipse,panel,frame,Java,Windows,Eclipse,Panel,Frame,这是我的第一个问题,如果有任何错误,请纠正我 这是代码,我试着用一个面板制作一个框架,但应用程序并没有在按下关闭按钮时退出 当我试图将默认关闭操作设置为退出时,它显示了一个错误 所以,请帮帮我 import java.awt.*; public class FramewithPanel { private Frame f; private Panel p; public FramewithPanel(String title){ f = new Fr
import java.awt.*;
public class FramewithPanel {
private Frame f;
private Panel p;
public FramewithPanel(String title){
f = new Frame(title);
p = new Panel();
}
public void LaunchFrame() {
f.setSize(200,200);
f.setBackground(Color.blue);
f.setLayout(null);
p.setSize(100,100);
p.setBackground(Color.yellow);
f.add(p);
f.setVisible(true);
}
public static void main(String args[]) {
FramewithPanel guiWindow =
new FramewithPanel("Frame with Panel");
guiWindow.LaunchFrame();
}
}
我想您应该使用JFrame而不是Frame,因为Frame没有默认的close操作。相反,它根本不会关闭,只会生成WINDOW\u CLOSING类型的WindowEvent
所以你要么这么做
private JFrame f;
// and in the constructor
f = new JFrame(title);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
或
正如您所提到的,您坚持使用Frame而不是替代的JFrame,最简单的解决方案是添加一个WindowListener,如下所示:
瞧 在你的问题中,你说的是一个错误。分享错误/stacktrace可能会很有用。非常感谢,但我已经知道了这一点,我只想使用一个帧。我相信这个框架在JFrame不在的时候也被使用过。@Sarthak你完全正确。虽然我一般不推荐,但你当然也可以使用框架。WindowListener执行与defaultCloseOperation完全相同的操作。只是在稍微不同的时间调用它,但这在您的情况下并不重要。非常感谢,伙计!非常感谢你的回答!
f = new Frame(title);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
f.dispose();
}
});
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});