Не устанавливается фокус на компонент - Java
Формулировка задачи:
Здравствуйте! Из главного окна при нажатии кнопки вызываю диалоговое окно. Нужно, чтобы каждый раз при показе диалога (d.setVisible(true)) получало фокус текстовое поле tfName. Сейчас пришлось для этой простой вещи реализовывать интерфейс WindowListener и все его методы. Но и это не помогает. Может, есть какой-то более простой, а главное, эффективный способ?
Главное окно:
Окно диалога:
class MainWindow extends JFrame{ private MyDialogWindow d; public MainWindow(String s){ super(s); // Тут размещаются какие-то компоненты JButton btnAddNewRecord = new JButton("Добавить"); add(btnAddNewRecord); // Обработчик кнопки, который вызывает диалоговое окно btnAddNewRecord.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { if(d == null) d = new MyDialogWindow(null, "Добавление записи"); d.setVisible(true); } }); setSize(480, 510); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } public class DialogDemo{ public static MainWindow mainwnd; public static void main(String[] args){ mainwnd = new MainWindow("Главное окно"); } }
class MyDialogWindow extends JDialog implements WindowListener { public TextField tfName; public AddPhoneRecordWindow(Frame f, String s){ super(f, s, true); setLayout(null); tfName = new TextField(30); tfName.setBounds(130, 30, 160, 25); add(tfName); //Какие-то другие компоненты } @Override public void windowActivated(WindowEvent arg0) { // TODO Auto-generated method stub tfName.requestFocus(); } @Override public void windowClosed(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowClosing(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowDeactivated(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowDeiconified(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowIconified(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowOpened(WindowEvent arg0) { // TODO Auto-generated method stub tfName.requestFocus(); } }
Решение задачи: «Не устанавливается фокус на компонент»
textual
Листинг программы
JTextField tfName; public MyDialogWindow(String title){ setTitle(title); tfName = new JTextField(30); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д