0

があり、JMenuこれJMenuItemをクリックすると、 または ウィンドウを開く必要がありJFrameます。つまり、内部JButtonに , JTextField,...

これどうやってするの ?

4

3 に答える 3

2

JFrame最初の を作成したのと同じ方法で を作成しJFrame、呼び出すことができます

setVisible(true);

メニューをクリックしたときに表示されるようにしますActionListenerJMenuItem


モーダルにしたい場合 (新しいウィンドウを閉じないと元のフレームにアクセスできない)、JDialog代わりにを使用するmodalか、コンストラクターで true に設定するか、 を呼び出しsetModal(true)ます。

于 2010-05-05T18:01:37.037 に答える
0

「ポップアップ」と「ウィンドウ」を混同しています。

通常、オブジェクトを右クリックすると、ポップアップが表示されます。ポップアップには、そのオブジェクトに対して実行できるアクションのリストが表示されます。たとえば、テキスト フィールドには「切り取り」、「コピー」、および「貼り付け」が含まれる場合があります。詳細については、「ポップアップ メニューの表示」に関する Swing チュートリアルのセクションを参照してください。

ウィンドウは、JFrame または JDialog で他の Swing コンポーネントを表示するために使用されます。

このアクションをメニュー項目から呼び出していることを考えると、JFrame やポップアップではなく、モーダル JDialog を作成して表示する必要があると思います。

また、チュートリアルを読みながら、「Using Layout Managers」のセクションを読んでください。null レイアウトを使用することは、ダイアログを作成する最良の方法ではありません。

于 2010-05-05T19:59:32.033 に答える
0

私は良いコードビューのために答えを書いています:

JFrame を使用すると、「java.lang.IllegalArgumentException: コンテナーにウィンドウを追加しています」というエラーが発生しました。

それはactionPerformedメソッドの私のコードです:

PopupFactory factory = PopupFactory.getSharedInstance();
JFrame frame = new JFrame();
frame.setLayout(null);
frame.setBounds(428, 99, 185, 155);

final JButton button = new JButton();
button.setText("Button");
button.setBounds(10, 93, 111, 25);
frame.getContentPane().add(button);

final Popup popup = factory.getPopup(null, frame, 200, 200);
popup.show();
于 2010-05-05T18:55:26.373 に答える