有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

windows我已经用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();
    }
}

共 (2) 个答案

  1. # 1 楼答案

    正如您所提到的,您坚持使用Frame而不是替代JFrame,最简单的解决方案是添加一个WindowListener,如下所示:

    f.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
    

  2. # 2 楼答案

    我想您应该使用JFrame而不是Frame,因为Frame没有默认的关闭操作。相反,它根本不会关闭,只会生成类型为WINDOW_CLOSINGWindowEvent

    所以你要么这么做

    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();
        }
    
    });