Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我用Java(Eclipse)制作了一个带有面板的框架,应用程序在按下交叉按钮时不会关闭_Java_Windows_Eclipse_Panel_Frame - Fatal编程技术网

我用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);
    }
});