2017-01-03 4 views
-3

私はメインのJFrameともう1つのJDialogを持っています。 ユーザーがボタンをクリックした場合、JDialogがこのJFrameのメソッドを呼び出すようにします(このJFrameのComboBoxの操作がいくつかあります)。 どうすればいいですか? MyJFrameを使用したくありませんform = new MyJFrame();それは私がやりたくない新しいJFrameを作るので、私は現在コンピュータ上で動作しているJFrameからメソッドを呼び出したいと思う。おかげさまで JFrameのメソッドにJDialogからアクセスするには?

答えて

0

JOptionPane.showInputDialog()の場合、ユーザーからの入力をJDialogで表示します。

+0

残念ながら私はそれを行うことはできません。私のJDialogにはいくつかのコンボボックス、TextAreaなどがあります...あなたが言ったようにInputDialogを作ることは不可能です。まあ...おそらくそれは可能ですが、私はこのJOptionPaneの観点からはるかに多くの作業を行うでしょう。 – Persantarus

1

JButtonJDialogであると仮定すると、

両方が同じクラスにある場合は、これを行うだけではどうですか?

そうでないと、あなたは自分のダイアログそして、そのコンストラクタで JFrameを渡す(私はお勧めしませんどの) JDialogを拡張している場合

button.addActionListener(e -> form.doSomething()); 

に短縮することができ

button.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     //I just got clicked 
     form.doSomething(); 
    } 
}); 

それにアクセスできます。

コードをもっと見ずにはるかに追加することはできません。

+0

実際には...そうではありません。プログラムはMVCに基づいているので、 "View"パッケージにはJFrameとJDialogがあります。それは簡単ではありません...; p – Persantarus

+0

@Persantarusは、あなたの2番目のクラスで 'JDialog'を拡張していますか?そのコンストラクタであなたの 'MyJFrame'をパスし、使用することを – Moira

+0

java.awt.EventQueue.invokeLater(新しいRunnableを(){ ます。public void実行(){ 新しい使って、JDialog(フォーム).setVisible)(真;} }); < - 静的コンテキストから非静的変数形式を参照できないというエラーが表示されます。私は可変プライベートJFrameフォームを作成し、コンストラクタthis.form = form; – Persantarus

関連する問題