Не устанавливается фокус на компонент - 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);
}