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 に答える