选择组合框项目时如何在文本字段上设置焦点

时间:2012-12-27 20:29:58

标签: java

private void cbdmnstatItemStateChanged(java.awt.event.ItemEvent evt) {
    if(evt.getsource()==getSelectedItem){
        tf1.setFocus(true);
    }        
}

2 个答案:

答案 0 :(得分:0)

使用此方法在文本字段上设置焦点。

javax.swing.JComponent#requestFocus()

在你的情况下,它看起来像:

private void onStateChange(java.awt.event.ItemEvent evt) {
    tf1.requestFocus();
}

<强>更新 如果你的textfields和combobox-items是静态的,那么这对你有用,如果它们是动态的,它会变得有点复杂。

 private void onStateChange(java.awt.event.ItemEvent evt) {
        Object selectedItem = evt.getItem();
        if (selectedItem.equals("X")) {
            jTextField1.requestFocus();
        } else if (selectedItem.equals("Y")) {
            jTextField2.requestFocus();
        } else if (selectedItem.equals("Z")) {
            jTextField3.requestFocus();
        }
    }

答案 1 :(得分:0)

基本上你应该这样(一个快速的例子):

public class TestApp {

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(300, 300);
            Container pane = f.getContentPane();
            final JTextField field = new JTextField();
            pane.add(field);
            pane.add(new JTextField(), BorderLayout.NORTH);
            JComboBox b = new JComboBox();
            b.addItem("Don't focus");
            b.addItem("Focus");
            b.addItemListener(new ItemListener() {
                @Override
                public void itemStateChanged(ItemEvent e) {
                    if(e.getStateChange() == ItemEvent.SELECTED) {
                        if("Focus".equals(e.getItem())) {
                            field.requestFocus();
                        }
                    }
                }
            });
            pane.add(b, BorderLayout.SOUTH);
            f.setLocationRelativeTo(null);
            f.setVisible(true);
        }
    });
}