Java Swing: невозможно редактировать JComponents в расширении JWindow - PullRequest
2 голосов
/ 15 сентября 2011

Я написал класс, который расширяет JWindow, который служит своего рода настраиваемым диалоговым окном в моем приложении. Когда мне нужно вызвать одно из этих окон, я создаю новый экземпляр класса; чтобы убрать окно, я вызываю метод dispose ().

Проблема, с которой я сталкиваюсь, заключается в том, что пользователь не может редактировать компоненты с текстовым полем, например JTextField и JSpinner. Пользователь может щелкнуть такие компоненты, как drop-down boxes и buttons, и это отлично работает, но когда дело доходит до ввода текста в текстовое поле, это не работает.

Кто-нибудь еще сталкивался с этой проблемой?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 15 сентября 2011

Есть несколько условий, которые нужно выполнить, пока дочерний элемент окна не сможет получить фокус, см. Документацию для window.isFocusableWindow ().

для большинства контекстов достаточно установить для свойства focusableWindowState значение true, например

    JFrame owner = new JFrame();
    owner.setVisible(true);
    JWindow window = new JWindow(owner);
    window.setFocusableWindowState(true);
    window.add(new JTextField("edit me"));
    window.setSize(200, 200);
    window.setVisible(true);
1 голос
/ 15 сентября 2011

1) возможно, вы смешиваете AWT с Swing drop-down box and button, вы уверены, что все определения Components начинаются с J, drop-down boxes == JComboBox, Button == JButton и т. Д.

2) не создавать много контейнеров верхнего уровня на Fly / Runtinme

3) Has anyone else experienced this problem? нет, никогда

4) для реальной и лучшей помощи, пожалуйста, отредактируйте ваш пост и отправьте сюда код, который демонстрирует вашу проблему здесь: простые правила sscce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...