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クラスでのancestorListenerの追加、およびInputTaskWindowでのJTextFieldの作成時にancestorListenerの追加を試みました(どちらの場合も、JTextFieldに追加し、説明されているRequestFocusListenerクラスを使用しています)リンクで)。どんな助けでも大歓迎です。