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

2 回答 2

0

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

javax.swing.JComponent#requestFocus()

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

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

更新 这对你有用,如果你的文本字段和组合框项目是静态的,如果它们是动态的,它会变得有点复杂。

 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();
        }
    }
于 2012-12-27T20:38:00.127 回答
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);
        }
    });
}
于 2012-12-27T20:43:56.287 回答