簡體   English   中英

如何開始,使用幾個面板開發基於 swing 的應用程序,每個面板都有下一個按鈕

[英]how to start, developing swing based application with few panels with next buttons for each

我是 java 的新手。我正在創建一個基於 swing 的 UI。 我創建了 2 個框架,每個框架都在同一個 package 內的單獨的 .java 文件中。

這兩個框架代表應用程序的 2 個屏幕(面板)。 單擊第一幀中的下一步按鈕時,它應該移動到第二幀。

當我檢查時,這兩個類都有 main 方法,我認為這應該是創建應用程序的正確方法。 應該只有一種主要方法。

單擊“下一步”時,我試圖為第一幀的主面板設置 setVisible(false),為第二幀的主面板設置 setVisible(true)。 但這無法完成,因為 class 中的面板是私有的。 對上述問題有什么解決辦法嗎?

作為初學者,有人可以建議我如何開始使用此類應用程序嗎? 需要遵循的准則是什么? 請幫助我查找與開始開發此類應用程序相關的文檔。

看完答案后,我的評論是:

我使用以下代碼從第一個面板到下一個面板的 go,但沒有用。

private void gotoNextPanel(){
//    jPanelFirstScreen.setVisible(false);
      JPanelSecondScreen jpanelSecondScreen= new JPanelSecondScreen();
      jpanelSecondScreen.setVisible(true);
      UpgradeUtilityGUI upgradeUtilityGUI = new UpgradeUtilityGUI();
      upgradeUtilityGUI.removeAll();
      validate();
      repaint();
//      upgradeUtilityGUI.add(jpanelSecondScreen);
            upgradeUtilityGUI.getContentPane().add(jpanelSecondScreen, "card2");
      jpanelSecondScreen.setVisible(true);
      validate();
      repaint();

    }

我正在使用 .netbeans,並在框架的卡片布局中添加了兩個面板。 當我使用上面的代碼更改面板時,沒有任何反應,第一個面板仍然出現。 有人可以告訴我,當兩個面板都添加到 jFrame 的卡片布局時,如何編寫代碼從一個面板移動到另一個面板?

使用其他人提到的CardLayout ,如此處所示(和一個 frame )。

游戲視角高分視圖

單擊“下一步”時,我試圖為第一幀的主面板設置 setVisible(false),為第二幀的主面板設置 setVisible(true)。 但這無法完成,因為 class 中的面板是私有的。 對上述問題有什么解決辦法嗎?

將面板設置為public訪問級別,它們將可以從其他包中獲得。


該行隱含了該代碼片段中的一個問題:

UpgradeUtilityGUI upgradeUtilityGUI = new UpgradeUtilityGUI();  

在添加到容器之前,它會從 scope 中消失。 此外,他們應該不需要在向布局添加新卡片時刪除任何內容,也不需要調用repaint()

如果您的應用程序非常簡單,只有兩個面板,那么您不應該創建兩個 JFrames。 您應該創建一個帶有兩個 JPanel 的 JFrame,每個 JPanel 都包含您需要的信息。 如果您准備好第一個面板,您可以在其上調用 setVisible(false),並在第二幀上調用 setVisible(true)。 這是最容易理解的解決方案之一。
但是,它只取決於您是否適合您,或者您想使用一些更詳細的解決方案。

您應該做的是為應用程序設置一個JFrame ,然后在您想要在屏幕之間移動時添加和刪除JPanels

您的每個JPanels基本上應該具有以下內容... 1. 一個名為“Next”的JButton 2. 每個按鈕的ButtonListener ,告訴JFrame加載 panel2、panel3 等。

作為ButtonListener的一部分,您基本上只想調用類似JFrame.removeAll()的方法來刪除現有面板,然后JFrame.add(JPanel)來添加下一個面板。

通過擁有 1 個JFrame ,您也只有 1 個main()方法。

不要使用兩個或更多JFrames ,也不要使用分離和編譯Jar files ,這是地獄之路,最好看看CardLayout

暫無
暫無

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

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