2012-05-28 134 views
3

我在Android中爲我的客戶端構建了一個大型應用程序。 這個新項目是用Java爲PC構建相同的應用程序。所以我已經開始使用swing進行開發。 在Android中構建時,我使用具有內容視圖的活動的類,並且我可以在活動之間切換。 在java中,我已經構建了多個擴展JFrame的類,我希望在它們之間切換。 什麼是正確的方式呢?在Java swing中切換屏幕

是這樣的:

new_class.setVisible(true); 
old_class.setVisible(false); 

正確的方法是什麼?

回答

8

使用的Swing會使用相應的策略在一個頂層容器,要麼將所有的GUI元素的屏幕「的一般方法(通常爲CardLayout,但魔鬼在細節)。 This GUI顯示了一些其他的選擇(JSplitPane &嵌套佈局):

this answer見許多其他的替代品。


對於任何其他的功能這將在邏輯上處於不同容器,使用(可能)模態對話框或JOptionPane。例如。一個log-in, popped from the main frame


另一個要考慮的是,搖擺(與桌面顯示器)使我們能夠提供更豐富的組件集用戶。例如,通常使用每個目錄一個列表來實現Android SD卡文件系統的瀏覽,並且在更改列表的內容或進入新目錄時查看。在Swing中,您可能會使用一個JTree。因此,在桌面GUI工具箱中對「不同屏幕」的需求要少得多,而不是在設計用於選項卡或手機的設備上。

這是一棵用於file browser的樹。

+1

'CardLayout,但魔鬼在details'? ??,我看不出任何重要的比較添加/刪除JPanels在飛行+1 – mKorbel

+1

@mKorbel對不起,從來沒有想過'添加/刪除',但只是所有其他的可能性(其中有關於打)。但用例確實(尖叫)***'CardLayout' ***,我會給你的。 –

0

正確的方法是從這些JFrames創建實例並設置其可見性。

new Fram1().setVisible(true); 

new Fram2().setVisible(true); 
+2

參見[多個JFrames,好/壞習慣的用?(http://stackoverflow.com/a/9554657/418556) –