私がやろうとしていることを説明させてください -タイトルはそれを大まかに説明していると思いますが、私が物事を正しい方法で行っているかどうかはあまり確信が持てないので、間違っている場合は修正してください!
を使用してカスタム ダイアログを作成しましたLayeredPane
。基本的にjPanel
は に表示されるためPOPUP_LAYER
、メイン コンテンツの上に重ねて表示されます。このパネルには、単純な「label-textbox-okay-cancel」コントロール グループが含まれています。これを「ダイアログ パネル」と呼びます。
何をしようとしていますか: メイン ウィンドウ ( に含まれるLayeredPane
) でボタンをクリックすると、ダイアログ パネルが表示され、ユーザーがテキストを入力できるようになり、[OK] または [キャンセル] をクリックします。これはすべて簡単ですが、このコードを再利用できるようにしたいと思います。つまり、メイン ウィンドウの他のボタンは同じDialog Panelを呼び出しますが、ラベルのテキストは異なります。
もちろん、これにはある種のコールバック関数を含める必要があります。これにより、ダイアログ パネルの OK ボタンが、それを呼び出したボタンに応じて正しいコードを実行します。
私の現在の試みは、ユーザーがDialog Panelの OK ボタンをクリックしたときに実行される関数の名前を含む文字列を格納することです。この文字列を取得して関数名に変換しようとしていますが、これまでに「リフレクション」への参照が多数見つかりましたが、その多くは良い考えではないことを示唆しています。
いずれにせよ、以下のコードの「obj」が何であるかを理解せず、メソッドを呼び出すことができないため、サンプルコードを動作させることができませんでした:
method = obj.getClass().getMethod(myCallbackString);
私の質問は次のとおりです。
まず、私はこれについて正しい方法で進んでいますか?私は提案を受け入れる以上のものですが、私は本当に始めたばかりなので、できるだけシンプルに保つようにしてください!
次に、上記のコードの「obj」は何ですか? これが私がやるべきことではない場合でも、私は本当に知りたいです!
私の他の考えには、次のようなものがあります。私のダイアログ パネルは独自のクラスにある必要があります。そうであれば、コールバック関数を渡す方法は?
ヘルプやアドバイスをいただければ幸いです。
ところで:「なぜ通常のダイアログを使わないのですか?」という質問への答えとして。私は現在実験しているとしか言えません。これができるかどうかを確認したいだけです。
MVK