java - 为什么我的 JAVA GUI 打开多个窗口?

标签 java swing user-interface awt frame

我是 GUI 新手,如果错误真的很明显,我很抱歉。 我试图创建一个带有几个按钮的简单窗口,但每次运行代码时,它都会打开四个窗口,而不是一个。任何帮助将不胜感激。

public class CISUC extends JFrame implements Serializable {

    //interface
    JFrame mainFrame;
    JPanel mainPanel;
    JButton createProject, manageProject,listActive, listUnfinished,listaFinished;



    public CISUC(){
        //interface
        mainFrame = new JFrame();
        mainFrame.setResizable(false);
        mainPanel = new JPanel();
        mainPanel.setLayout(new GridLayout(2,3));

        createProject= new JButton("Create Project");
        mainPanel.add(createProject);



        manageProject = new JButton("Manage Project");
        mainPanel.add(manageProject);  

        listActive = new JButton("List Active Projects");
        mainPanel.add(listActive); 

        listUnfinished = new JButton("List Unfinished Projects");
        mainPanel.add(listUnfinished);

        listFinished = new JButton("Listar Finished");
        mainPanel.add(listFinished);
        mainFrame.setSize(800, 500);
        mainFrame.add(mainPanel);
        mainFrame.setVisible(true);

    }

public static void main(String[] args) {
        CISUC cisuc = new CISUC();


    }
}


最佳答案

正如其他人已经对您说过的那样,打开的框架数量没有任何问题,我只是尝试了代码,它打开了一个 JFrame。

在我看来,您的代码中存在一些错误:您不需要为此目的扩展 JFrame 并实现可序列化...这样,由于未使用的继承(未使用)字段和方法,您的应用程序就会变得更重来自父类。此外(正如其他人已经告诉您的那样),没有与您的 JFrame 链接的关闭操作,因此当您按下 X 按钮时,您的应用程序将继续运行,直到您关闭计算机。

要避免这种情况,只需添加以下语句:

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  • 我建议你将 main 方法、main Object 和 JPanel 分开放置 类,使您的应用程序更易于阅读、调试和维护。如果您计划拥有许多功能,那么拥有一个扩展 JFrame 的自定义类可能是一个好主意,您可以在其中组装不同的自定义 GUI 对象,每个对象都扩展一个 Swing/AWT 组件..最后在主对象中调用它们或直接在主课上!对此没有限制,但要明智地使用继承:许多类意味着更多的样板代码......总是需要权衡!
  • 另一个好主意应该是进行图形初始化(大小, 颜色等...)在构造函数之外的单独方法中。只是 创建类似“private voidinitializeGraphics(){...}”的内容
  • 除此之外,您可以在将 actionListener 映射到 按钮,将它们放在单独的命名类中或至少放在 像 private void addListeners(){...} 这样的单独方法,并且只是 在构造函数代码末尾调用此函数。

我告诉你这一点是因为使用 Swing 时,如果你开始在同一个地方添加所有内容,很容易出现 5000 行不可读且无法维护的代码!

祝您申请顺利:)

PS:看看 MigLayout...我想你会喜欢它,即使一开始看起来有点复杂。

关于java - 为什么我的 JAVA GUI 打开多个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59275026/

相关文章:

java - 无法执行.jar文件 "Could not find the main class"

java - 在 Tomcat 中部署 jBPM 7.8.0 - 无法使用 tomcat 用户登录

java - 在具有滚动功能的 JTextArea 中显示数组

另一个类中的 Java jbutton

Java BoxLayout 使用全宽

user-interface - 我如何在抖动上创建自定义阴影?

java - 我用 Java 编写的扫雷程序抛出 NullPointerException

python - urwid 中是否有相当于 GUI 文本字段的内容?

java - 如何将 JavaScript 值传递给 JSP 中的 Scriptlet,这是我的代码

java - 有没有办法在没有 web.xml 的情况下创建自定义 404 页面?