2011-02-12 41 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

相关问题