2009-07-11 76 views
3

我正在使用Swing框架在Java中編寫我的第一個GUI應用程序。我使用JTextField,JPasswordField和JButton類編寫了一個基本的登錄系統。現在,我正在爲該按鈕編寫actionPerformed方法,因爲它們不再是必需的,所以我想刪除這些項目,但我不確定實現此目的的最佳方式。Java GUI設計建議

我已經考慮過使用這些組件的setVisible方法,這似乎工作,但我敢肯定這不是它的首選方式。對不起,如果這是一個愚蠢的問題..

+0

刪除它們是什麼意思?你是否正在改變你唯一的屏幕? – akarnokd 2009-07-11 19:15:51

+0

是的,這就是我試圖去反正......這只是有點令人困惑,因爲沒有引用包含組件的實際JFrame。 – mportiz08 2009-07-11 19:31:39

+0

你是否爲你的應用使用了一些GUI編輯器,或者你只是手動編寫它?你能告訴我們一些代碼樣本嗎?在JFrame中總是有** ** ** – akarnokd 2009-07-11 19:38:11

回答

5

讓您的登錄對話框與主窗口分開。完成登錄後,只需隱藏登錄對話框即可。

您還可以將文本字段和按鈕保存到類字段中,並稍後調用remove(Component)。

+0

是否建議setVisible或刪除? – 2009-07-11 19:44:55

1

通常,您希望能夠在一行代碼中執行此操作。所以,你應該考慮包裝你想要顯示或隱藏在JPanel中的不同的東西。然後,您可以動態顯示或隱藏JPanel。

0

我同意JPanel的建議。將登錄組件添加到JPanel,然後在登錄後隱藏JPanel。

1

你可以有一個登錄的JPanel,這是建立和顯示,一旦用戶的密碼驗證,則可以顯示你的應用程序JPanel。這可以使用CardLayout輕鬆完成。

它將容器中的每個組件視爲卡片。一次只能看到一張卡片,容器就像一疊卡片一樣。

Here is a tutorial

使用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);