2011-02-12 44 views
0

我注意到我可以使用getName()作爲技巧的一部分。 What is java.awt.Component.getName() and setName() used for? 但我真的不知道從哪裏開始。我應該使用什麼類型的監聽器(假設文本字段/或箱當前閃爍/選擇)設置重點爲所有字段


這是我剛纔的問題,並感謝您的幫助球員。 How do I use requestFocus in a Java JFrame GUI?

我意識到對於我創建的每個組件(Textfield),我必須插入一個像requestFocus(或使用transferFocus)的語句。 是否可以將此政策應用於所有字段???

我有幾個文本框和組合框。我遇到的問題是我不想爲每個字段/框編寫方法。

例如,我寫這樣

private JTextField getFirstNameEntry() { 
.... do something 
} 

的方法,因爲我的老師這樣

private JPanel getJContentPane() { 
     jContentPane = new JPanel(); 
     jContentPane.setLayout(new java.awt.FlowLayout(FlowLayout.LEADING)); 


     jContentPane.add(makeLabel(" First Name *", 100, 20)); 
     jContentPane.add(getFirstNameEntry(), null); 

     jContentPane.add(makeLabel(" Middle Initial", 100, 20)); 
     jContentPane.add(getMiddleInitialEntry(), null); 
// etc 

     return jContentPane; 

寫他的計劃。然而,爲了節省冗餘(這是我的第一動機),說我有一個框,我可以簡單地在上面的方法中添加以下代碼:getJContentPane()

titleBox = new JComboBox(new String[]{"Mr.","Mrs.","Ms.","Dr.","Prof.","Rev."}); 
jContentPane.add(titleBox); 

但這樣做,我還需要創建辦addItemListener

private void setComboBoxFocus() { 
     titleBox.addItemListener(
      new ItemListener(){ 
       public void itemStateChanged(ItemEvent e){ 
        if(e.getStateChange() == ItemEvent.SELECTED) 
        { 
         String titleSelected = titleBox.getSelectedItem().toString(); 
         System.out.println(titleSelected); 
         titleBox.transferFocus(); 
        } 
       } 
      }); 

     } 

的方法。然而,這並不能真正救冗餘的。如果我添加了多個ComboBox,我將不得不編寫另一個類似的方法。事實上,即使在一個ComboBox(titleBox)的情況下,我仍然會爲titleBox寫一個方法。

所以我的問題是:有沒有辦法編寫一個可以調用焦點的一般方法(也許一個組合框類型)?

謝謝你,對於這篇長文章感到抱歉。

回答

2

爲什麼不拿JComboBox參數傳送給setComboBoxFocus()方法,它允許您設置監聽器來任何JComboBox你可能有?像這樣:

private void setComboBoxFocus(JComboBox box) { 
    box.addItemListener(
      new ItemListener(){ 
       public void itemStateChanged(ItemEvent e){ 
        if(e.getStateChange() == ItemEvent.SELECTED) 
        { 
         String titleSelected = box.getSelectedItem().toString(); 
         System.out.println(titleSelected); 
         box.transferFocus(); 
        } 
       } 
      }); 
} 
+0

謝謝!有用。你是對的。我對java很陌生(2年來一直是C++學生)...我很擔心這個人...希望我能儘快找到java。 – CppLearner 2011-02-12 00:34:29

相關問題