3

Microsoft Word のメニュー バーを表す単純な Java プログラムを作成しています。ファイル メニューに終了ボタンを追加しますが、何もしません。

終了ボタンを実際に終了してプログラムを閉じるにはどうすればよいか教えてください。

これが私のコードです:

public class MicrosoftWordMenu {
        public static void main(String [] args)
        {
        JPanel panel = new JPanel();
        JFrame frame = new JFrame("Microsoft Word");
        JMenuBar bar = new JMenuBar();
        JMenu menu = new JMenu("File");
        JMenu menu1 = new JMenu("Edit");
        JMenu menu2 = new JMenu("View");
        JMenu menu3 = new JMenu("Insert");
        JMenu menu4 = new JMenu("Format");
        JMenu menu5 = new JMenu("Tools");
        JMenu menu6 = new JMenu("Table");
        JMenu menu7 = new JMenu("Window");
        JMenu menu8 = new JMenu("Help");

        frame.add(bar, BorderLayout.NORTH);
        frame.add(panel);

        bar.add(menu);
        bar.add(menu1);
        bar.add(menu2);
        bar.add(menu3);
        bar.add(menu4);
        bar.add(menu5);
        bar.add(menu6);
        bar.add(menu7);
        bar.add(menu8);

        JMenuItem menuitem = new JMenuItem("New...");
        JMenuItem menuitem1 = new JMenuItem("Open...");
        JMenuItem menuitem2 = new JMenuItem("Close");
        JMenuItem menuitem3 = new JMenuItem("Save");
        JMenuItem menuitem4 = new JMenuItem("Save as...");
        JMenuItem menuitem5 = new JMenuItem("Save as web page...");
        JMenuItem menuitem6 = new JMenuItem("Web page preview ");
        JMenuItem menuitem7 = new JMenuItem("Print ");
        JMenuItem menuitem8 = new JMenuItem("Exit");

        menu.add(menuitem);
        menu.add(menuitem1);
        menu.add(menuitem2);
        menu.add(menuitem3);
        menu.add(menuitem4);
        menu.add(menuitem5);
        menu.add(menuitem6);
        menu.add(menuitem7);
        menu.add(menuitem8);

        frame.setSize(600,100);
        frame.setVisible(true);
        }

}
4

5 に答える 5

4

また、ここActionに示すように、コンポーネントが機能を共有できるようにするためにを使用することも検討してください。

于 2011-08-17T10:27:48.153 に答える
3

メニュー選択を呼び出しSystem.exit(0)ても問題ありません。

于 2011-08-17T10:00:19.117 に答える
2

アクションの再利用を可能にする AbstractAction クラス (ActionListener インターフェイスを実装する) を常に拡張します。AbstractAction を拡張することで、ボタンがクリックされるたびに actionPerformed(ActionEvent e) メソッドが呼び出されます。

public class CloseAction extends AbstractAction {

  public CloseAction() {
    super("Close");
  }

  public actionPerformed(ActionEvent e) {
    System.exit(1);  
  }

}

上記のアクションをボタンの 1 つに適用するには、以下のコードに従うだけです。

CloseButton.setAction(新しいCloseAction());

閉じるボタンは、押されるたびにアプリケーションをシャットダウンします。

于 2011-08-17T11:23:31.830 に答える
2

現時点では、GUI 要素を作成しているだけですが、基本的には空のシェルです。具体的には、メニューに表示される項目を作成しましたが、それらの項目に動作を追加していません。(アイテムがクリックされたときに何をするかをプログラムにどこにも伝えていないので、何が起こると思いましたか)?

この動作を提供するには、 を登録する必要があります。これは、要素で何かActionListenerが発生したときに呼び出され、その時点で適切なアクション ( の呼び出しなど) を実行できるようにします。 [Swing]の記述に関するチュートリアルを参照してください。詳細については、イベント リスナーを参照してください。System.exit(0)

于 2011-08-17T10:02:42.160 に答える
2

Closing an ApplicationExitActionで定義されているを使用します。メニュー項目をクリックすると、ウィンドウの右上にある [閉じる] アイコンをクリックするのと同じようになります。これにより、終了処理を行う必要がある場合に備えて、アプリケーションを終了する際の一貫性が確保されます。Exit

編集:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
...
// JMenuItem menuitem8 = new JMenuItem("Exit");
JMenuItem menuitem8 = new JMenuItem( new ExitAction() );
于 2011-08-17T21:15:13.910 に答える