我试图专注于 JDialog 中的 JTextField;在寻找类似问题后,我已经尝试了此链接中的所有建议,但没有任何建议有效。
我试图关注的组件是在一个名为“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 放在 GUI 类中的 JComponents 数组中;我已经使用 getComponents() 方法访问了其他组件,所以我知道这指向了正确的东西。
我已经尝试过 requestFocus()、requestFocusInWindow()、在 NewTask 类中添加一个祖先监听器,并在 InputTaskWindow 中创建 JTextField 时添加一个祖先监听器(在这两种情况下,我都将它添加到 JTextField 并使用描述的 RequestFocusListener 类在链接中)。任何帮助将非常感激。