簡體   English   中英

為什么我的 JAVA GUI 打開多個窗口?

[英]Why is my JAVA GUI opening multiple windows?

如果錯誤真的很明顯,我是 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 void initializeGraphics(){...}
  • 除此之外,您可以在將 actionListeners 映射到按鈕時執行相同的操作,將它們放在單獨的命名類中,或者至少放在一個單獨的方法中,例如private void addListeners(){...} ,然后在構造函數的末尾調用它代碼。

我告訴你這個是因為在使用 Swing 時,如果你開始在同一個地方添加所有內容,很容易有 5000 行不可讀和不可維護的代碼!

祝你申請順利:)

PS:看看 MigLayout...我想你會喜歡它,即使它一開始看起來有點復雜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM