我在Java(Eclipse)中创建了一个面板框架,应用程序在按下十字按钮时不会关闭
这是我的第一个问题,所以如果存在任何错误,请纠正我的错误。我在Java(Eclipse)中创建了一个面板框架,应用程序在按下十字按钮时不会关闭
这是代码,我尝试使用面板制作一个框架,但应用程序在按关闭按钮时不退出。
当我试图设置默认关闭操作退出时,它显示我一个错误。
所以,请帮助我。
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();
}
}
看到,因为你提到你是使用Frame
,而不是替代JFrame
坚持,最简单的解决方案是增加一个WindowListener
像这样:
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Et v oila!
非常感谢您的回答! –
我猜你想使用JFrame
代替Frame
,为Frame
没有默认的关闭操作。相反,它根本不会关闭,只会生成WindowEvent
类型的WINDOW_CLOSING
。
所以你要么
private JFrame f;
// and in the constructor
f = new JFrame(title);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
或
f = new Frame(title);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
f.dispose();
}
});
非常感谢,但我已经知道,我只想使用一个框架。我相信,当JFrame不在时,Frame也被使用过。 –
@Sarthak你完全正确。虽然我通常不推荐它,但您当然也可以使用“Frame”。 'WindowListener'和'defaultCloseOperation'完全一样。只是它在稍微不同的时间被调用,但这对你的情况无关紧要。 – Izruo
非常感谢,伙计! –
在你的问题你说的是一个错误。分享错误/堆栈跟踪可能很有用。 – Nrzonline