我正在尝试关注JDialog中的JTextField;我在寻找类似问题之后尝试了this link中的所有建议,但没有一条建议有效。
我试图关注的组件是在一个名为“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类中添加ancestorListener,并在InputTaskWindow中创建JTextField时添加ancestorListener(在这两种情况下我都将它添加到JTextField并使用RequestFocusListener类在链接中描述)。任何帮助将不胜感激。
答案 0 :(得分:0)
我还没确定问题是什么,但我决定放弃这段代码。我强烈怀疑这个问题与刷新功能有关,而不是对焦点方法的误解(我的第一个假设)。代码太纠结了,无法整理,所以我在考虑关闭这个问题。