2012-12-12 155 views
-1

我創建了一個組合框有兩個項目爲「Active」和「Droped」然後我去一個labeljtextfield並在jcomboobx action event所以寫代碼標籤和JTextField的enable and disable如何使標籤和文本框代碼工作,但這裏一個問題,就是標籤的JTextField最初未被禁用......當我選擇項「Droped」,然後選擇項目「Active」後的打算disabled否則initially運行的JFrame時,label and jtextfield enabled所以我想how to jlablel and Jtextfield enable when jcombobx select item " Droped " only當組合框項目選擇

sourc E碼:

private void wtdlActionPerformed(java.awt.event.ActionEvent evt) {          

     txt_reason.setEnabled(false); //txt_reason is jTextField 
     lab.setEnabled(false); //lab is jLabel 

     if(wtdl.getSelectedItem().equals("Active")) //wtdl is jConobbox 
     { 
     txt_reason.setEnabled(false); 
     lab.setEnabled(false); 
     } 
     else if(wtdl.getSelectedItem().equals("Droped")) 
     { 
     txt_reason.setEnabled(true); 
     lab.setEnabled(true); 
     } 
    } 

檢查快照:

enter image description here

+1

請糾正我,如果我錯了。如果我可以理解你的問題,你想在JFrame加載時禁用JTextField? –

+0

感謝回覆@Michael Ardan。是的,我希望當我加載的JFrame將JtextField和JLabel的都是禁用的,但是當我從JComboBox中選擇「DROP掉」項目,然後同時使能選擇JTextField和JLabel的.... –

回答

2

只需創建一個方法updateState()如下:

protected void updateState() { 
    boolean enabled = wtdl.getSelectedItem().equals("Droped"); 
    txt_reason.setEnabled(enabled); 
    lab.setEnabled(enabled); 
} 

,並調用它,你已經初始化您的組件和後您的actionPerformed()

+0

+1不錯的方法:) –

+0

@Guillaume Polet感謝親愛的先生們的幫助,當我在NetBeans中發佈代碼時,它給了我錯誤';'期待和PLZ檢查快照鏈接,您可以更好地理解http://i50.tinypic.com/2zyvtwg。 jpg –

+0

@AyazAli很抱歉,錯誤地輸入了我的代碼:'equals()'末尾有一個額外的')'。只需刪除該行上的最後一個')'即可。 –

1

除非我誤解:

你應該後通過setEnabled(false)添加代碼來設置JTextFieldJLabel殘疾人組件已創建。

如果您使用的是IDE我確定您可以通過右鍵單擊它並導航到屬性來設置組件的屬性(當然,當創建JFrame時,這將成爲默認值)。

0

您可以在創建組件後禁用JTextField。例如:
JTextField txtYourTextField = new JTextField();

txtYourTextField.setEnabled(false);

+0

同樣的,你的JLabel –

相關問題