JDialog を使用してユーザーから入力を取得し、ファイルを検索するアプリケーションがあります。ブラウズ ダイアログではなく、メタデータを使用するより特殊なダイアログです。
これはすべて正常に機能します。唯一の問題は、ユーザーが検索値を入力し、[OK] を押し、これらの値を受け取って、ダイアログを閉じずに (ダイアログを開いた呼び出し元のクラスから) 検索やその他の操作を実行できるようにしたいことです。
これらの操作は、エディターのプラグインの一部であるため、呼び出し元のクラスから実行する必要があります。
基本的には、要するに、任意のエディターで [検索] ダイアログが機能する方法に似ています。見つかったアイテムから次のアイテムにスキップしている間、[検索] ダイアログは開いたままです...
簡単なものが欠けているようですが、これを行う方法がわかりません。
編集:
Nick Rippe によって提案されたチュートリアルに従って、簡単なテスト アプリケーションでこれを試しましたが、動作させることができないため、何らかの形で誤解していると思います。ゲッターとセッターを含むフィールドを追加し、それを取得しようとしました:
メインクラス:
public class TestJFrames {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
TestForm frame = new TestForm();
frame.setDefaultCloseOperation(frame.DO_NOTHING_ON_CLOSE);
frame.addPropertyChangeListener("fileSelected", new FileSelectedListener());
frame.setVisible(true);
}
}
class FileSelectedListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent evt) {
System.out.println("TEST");
}
}
フォームクラスから:
private String fileSelected;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
this.setFileSelected("Test");
}
public String getFileSelected() {
return fileSelected;
}
public void setFileSelected(String fileSelected) {
this.fileSelected = fileSelected;
}
私は最終的に別の解決策を見つけました。同様の問題を抱えている他の人に役立つ場合は、ここに投稿してください。
ダイアログクラスのリスナーとして登録することで、呼び出し元のクラスからボタンイベントをリッスンできることに気づきました。私はこの例にかなり従いました: Java でカスタム イベントを作成する