0

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クラスを使用しています)リンクで)。どんな助けでも大歓迎です。

4

1 に答える 1