![](/img/trans.png)
[英]How to make multithreaded swing gui application start/stop thread with 2 buttons
[英]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.