Не устанавливается фокус на компонент - Java

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

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

Здравствуйте! Из главного окна при нажатии кнопки вызываю диалоговое окно. Нужно, чтобы каждый раз при показе диалога (d.setVisible(true)) получало фокус текстовое поле tfName. Сейчас пришлось для этой простой вещи реализовывать интерфейс WindowListener и все его методы. Но и это не помогает. Может, есть какой-то более простой, а главное, эффективный способ? Главное окно:
Листинг программы
  1. class MainWindow extends JFrame{
  2. private MyDialogWindow d;
  3. public MainWindow(String s){
  4. super(s);
  5. // Тут размещаются какие-то компоненты
  6. JButton btnAddNewRecord = new JButton("Добавить"); add(btnAddNewRecord);
  7. // Обработчик кнопки, который вызывает диалоговое окно
  8. btnAddNewRecord.addActionListener(new ActionListener() {
  9. public void actionPerformed(ActionEvent event) {
  10. if(d == null)
  11. d = new MyDialogWindow(null, "Добавление записи");
  12. d.setVisible(true);
  13. }
  14. });
  15. setSize(480, 510);
  16. setVisible(true);
  17. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  18. }
  19. }
  20. public class DialogDemo{
  21. public static MainWindow mainwnd;
  22. public static void main(String[] args){
  23. mainwnd = new MainWindow("Главное окно");
  24. }
  25. }
Окно диалога:
Листинг программы
  1. class MyDialogWindow extends JDialog implements WindowListener {
  2. public TextField tfName;
  3. public AddPhoneRecordWindow(Frame f, String s){
  4. super(f, s, true);
  5. setLayout(null);
  6. tfName = new TextField(30);
  7. tfName.setBounds(130, 30, 160, 25); add(tfName);
  8. //Какие-то другие компоненты
  9. }
  10. @Override
  11. public void windowActivated(WindowEvent arg0) {
  12. // TODO Auto-generated method stub
  13. tfName.requestFocus();
  14. }
  15. @Override
  16. public void windowClosed(WindowEvent arg0) {
  17. // TODO Auto-generated method stub
  18. }
  19. @Override
  20. public void windowClosing(WindowEvent arg0) {
  21. // TODO Auto-generated method stub
  22. }
  23. @Override
  24. public void windowDeactivated(WindowEvent arg0) {
  25. // TODO Auto-generated method stub
  26. }
  27. @Override
  28. public void windowDeiconified(WindowEvent arg0) {
  29. // TODO Auto-generated method stub
  30. }
  31. @Override
  32. public void windowIconified(WindowEvent arg0) {
  33. // TODO Auto-generated method stub
  34. }
  35. @Override
  36. public void windowOpened(WindowEvent arg0) {
  37. // TODO Auto-generated method stub
  38. tfName.requestFocus();
  39. }
  40. }

Решение задачи: «Не устанавливается фокус на компонент»

textual
Листинг программы
  1. JTextField tfName;
  2.  
  3. public MyDialogWindow(String title){
  4. setTitle(title);
  5. tfName = new JTextField(30);
  6. }

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


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

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

11   голосов , оценка 4.455 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут