Как задать элемент, изначально находящийся в фокусе? - Java

Узнай цену своей работы

Формулировка задачи:

Как мне задать элемент, изначально находящийся в фокусе? requestFocus работает только после отображения окна на экране, а мне хотелось бы задать енто дело в конструкторе окна... Использую менеджер компоновки BorderLayout и по умолчанию фокус ставится на элемент, находящийся в области BorderLayout.NORTH, а мне нужно начинасть с BorderLayout.CENTER... Есть там классы унаследованные от FocusTravelsalPolicy, но вот настроек у них никаких... разве что унаследовать с переопределением собственных методов, но это как-то слишком сложно для такой простой (и думается распространенной) операции

Решение задачи: «Как задать элемент, изначально находящийся в фокусе?»

textual
Листинг программы
public class MyForm extends JFrame {
    private JTextField textField1 = new JTextField("Default Focus");
    private JTextField textField2 = new JTextField("My Focus");
 
    private WindowAdapter wa;
 
    public MyForm() {
        getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
        getContentPane().add(textField1);
        getContentPane().add(textField2);
 
        wa = new WindowAdapter() {
            public void windowActivated(WindowEvent e) {
                textField2.requestFocusInWindow();
                e.getWindow().removeWindowListener(wa);
                wa = null;
            }
        };
        addWindowListener(wa);
    }
 
    public static void main(String[] args) {
        MyForm f = new MyForm();
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы