Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为所有字段设置焦点_Java - Fatal编程技术网

Java 为所有字段设置焦点

Java 为所有字段设置焦点,java,Java,我注意到我可以使用getName()作为技巧的一部分。 但我真的不知道从哪里开始。我应该使用哪种类型的侦听器(假设文本字段/或框当前正在闪烁/选中) 这是我之前的问题,谢谢你们的帮助。 我意识到,对于我正在创建的每个组件(Textfield),我必须插入一个类似requestFocus(或使用transferFocus)的语句。 是否可以将此策略应用于所有字段 我有几个文本字段和组合框。我遇到的问题是,我不想为每个字段/框编写方法 例如,我编写了这样一个方法 private JTextFie

我注意到我可以使用getName()作为技巧的一部分。 但我真的不知道从哪里开始。我应该使用哪种类型的侦听器(假设文本字段/或框当前正在闪烁/选中)


这是我之前的问题,谢谢你们的帮助。

我意识到,对于我正在创建的每个组件(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()

但要做到这一点,我仍然需要创建一个方法来执行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,则必须编写另一个类似的方法。事实上,即使在使用一个组合框(titleBox)的情况下,我最终还是会为titleBox编写一个方法

所以我的问题是:有没有一种方法可以编写一个通用的方法来调用所有人的焦点(可能是ComboBox类型的方法)


感谢您并为这篇长篇文章感到抱歉。

为什么不在您的
setComboxFocus()
方法中加入一个
JComboBox
参数,该方法允许您将该侦听器设置为任何
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();
                  }
              }
          });
}

非常感谢。它起作用了。你是对的。我对java(C++学生2年)是如此新奇…老兄,我被这件事压得喘不过气来。。。希望我能尽快学会java。
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();
                  }
              }
          });
}