我正在使用Swing框架在Java中編寫我的第一個GUI應用程序。我使用JTextField,JPasswordField和JButton類編寫了一個基本的登錄系統。現在,我正在爲該按鈕編寫actionPerformed方法,因爲它們不再是必需的,所以我想刪除這些項目,但我不確定實現此目的的最佳方式。Java GUI設計建議
我已經考慮過使用這些組件的setVisible方法,這似乎工作,但我敢肯定這不是它的首選方式。對不起,如果這是一個愚蠢的問題..
我正在使用Swing框架在Java中編寫我的第一個GUI應用程序。我使用JTextField,JPasswordField和JButton類編寫了一個基本的登錄系統。現在,我正在爲該按鈕編寫actionPerformed方法,因爲它們不再是必需的,所以我想刪除這些項目,但我不確定實現此目的的最佳方式。Java GUI設計建議
我已經考慮過使用這些組件的setVisible方法,這似乎工作,但我敢肯定這不是它的首選方式。對不起,如果這是一個愚蠢的問題..
讓您的登錄對話框與主窗口分開。完成登錄後,只需隱藏登錄對話框即可。
您還可以將文本字段和按鈕保存到類字段中,並稍後調用remove(Component)。
是否建議setVisible或刪除? – 2009-07-11 19:44:55
通常,您希望能夠在一行代碼中執行此操作。所以,你應該考慮包裝你想要顯示或隱藏在JPanel中的不同的東西。然後,您可以動態顯示或隱藏JPanel。
我同意JPanel的建議。將登錄組件添加到JPanel,然後在登錄後隱藏JPanel。
我會建議你使用一個JDialog進行登錄。成功登錄後,您只需調用「dialog.dispose()」,然後加載您的界面。 如果您正在構建需要顯示多個窗口的應用程序,你應該考慮使用的JDesktopPane(http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JDesktopPane.html)
你可以有一個登錄的JPanel,這是建立和顯示,一旦用戶的密碼驗證,則可以顯示你的應用程序JPanel。這可以使用CardLayout
輕鬆完成。
它將容器中的每個組件視爲卡片。一次只能看到一張卡片,容器就像一疊卡片一樣。
使用CardLayout,你的代碼可能是這個樣子:
實例變量:
static final String LOGINPANEL = "LOGINPANEL";
static final String MAINPANEL = "MAINPANEL";
JPanel cards;
您的面板創建:
JPanel loginPanel = new JPanel();
//add your stuff to the login panel
JPanel mainPanel = new JPanel();
//add your stuff to the main panel
cards = new JPanel(new CardLayout());
cards.add(loginPanel, LOGINPANEL);
cards.add(mainPanel, MAINPANEL);
那麼當你的密碼驗證,在AWT線程中,您可以這樣做:
CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, MAINPANEL);
刪除它們是什麼意思?你是否正在改變你唯一的屏幕? – akarnokd 2009-07-11 19:15:51
是的,這就是我試圖去反正......這只是有點令人困惑,因爲沒有引用包含組件的實際JFrame。 – mportiz08 2009-07-11 19:31:39
你是否爲你的應用使用了一些GUI編輯器,或者你只是手動編寫它?你能告訴我們一些代碼樣本嗎?在JFrame中總是有** ** ** – akarnokd 2009-07-11 19:38:11