Я пытаюсь сосредоточиться на JTextField в JDialog; Я пробовал все предложения в this link после того, как выискивал подобные вопросы, но ни одно из предложений не работало.Невозможно сфокусироваться на JTextField в JDialog
Компонент, на котором я пытаюсь сосредоточиться, создается в классе под названием «InputTaskWindow», и я пытаюсь создать диалог из класса «MainWindow». Вот где проблема (это в «MainWindow»):
public class NewTask extends AbstractAction {
JList mTaskList;
JTextArea mDetailsTextArea;
public NewTask (JList tl, JTextArea dta){
mTaskList = tl;
mDetailsTextArea = dta;
}
public void actionPerformed(ActionEvent e) {
int option = 0;
InputTaskWindow inputTaskWindow = new InputTaskWindow();
JOptionPane optionPane = new JOptionPane(inputTaskWindow.createComponents(), JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
JDialog dialog = optionPane.createDialog("New Task");
dialog.setSize(200, 200);
dialog.pack();
((JTextField) inputTaskWindow.getComponent(inputTaskWindow.NAMETF)).requestFocus();
dialog.setVisible(true);
if (optionPane.getValue() != null){
option = (Integer)optionPane.getValue();
}
if (option == JOptionPane.OK_OPTION){
Task t = inputTaskWindow.getTask();
activeDay.addTask(t);
}
populateLists(mTaskList);
}
Я поставил JTextField Я пытаюсь получить доступ в массиве JComponents в классе GUI; Я получил доступ к другим компонентам с помощью метода getComponents(), поэтому я знаю, что это указывает на правильную вещь.
Я попробовал requestFocus(), requestFocusInWindow(), добавив в класс NewTask класс ancestorListener и добавив ancestorListener после создания JTextField в InputTaskWindow (в обоих случаях я добавляю его в JTextField и используя класс RequestFocusListener, описанный в ссылке). Любая помощь приветствуется.
Я думаю, вы должны исправить свои соглашения об именах, чтобы их было легче читать. Кроме того, вместо вызова 'requestFocus', попробуйте вызвать' setFocusable (true) '. –
Я не вижу, где вы пытаетесь добавить 'JTextField' в' JDialog' –
Maxim: я не добавляю его прямо; его в JPanel, созданном в InputTaskWindow, который передается в диалог в createComponents(). Нужно ли сначала сосредоточиться на JPanel? – LMNOP