Не устанавливается фокус на компонент - 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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д