2

ユーザーが「ファイル」タブをクリックして「終了」を選択すると、作成したウィンドウ全体が終了するようにコードを記述しようとしています。

メソッドを使用しようとしてdispose();いますが、「メソッド dispose() は型 new ActionListener() に対して未定義です」というエラーが表示されます。

コードはこちら

public static void addLayouts(){

        frame = new JFrame();
        frame.setSize(600, 600);
        frame.setTitle("IPFinder");
        GroupLayout groupLayout = new GroupLayout(frame.getContentPane());
        groupLayout.setHorizontalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGap(0, 384, Short.MAX_VALUE)
        );
        groupLayout.setVerticalGroup(
            groupLayout.createParallelGroup(Alignment.LEADING)
                .addGap(0, 362, Short.MAX_VALUE)
        );
        frame.getContentPane().setLayout(groupLayout);

        JMenuBar menuBar = new JMenuBar();
        frame.setJMenuBar(menuBar);

        JMenu mnFile = new JMenu("File");
        menuBar.add(mnFile);



        JMenu mnEdit = new JMenu("Edit");
        menuBar.add(mnEdit);

        JMenuItem mntmCopyResults = new JMenuItem("Copy Results");
        mnEdit.add(mntmCopyResults);

        JMenu mnAbout = new JMenu("About");
        menuBar.add(mnAbout);

        JMenuItem mntmAboutIpfinder = new JMenuItem("About IPFinder");
        mnAbout.add(mntmAboutIpfinder);
        frame.setVisible(true);



        JMenuItem mntmExit = new JMenuItem("Exit");
        mntmExit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        });
        mnFile.add(mntmExit);


    }

私はそれを理解しようとしてグーグルで約2時間過ごしましたが、うまくいきません。

この時点ですべての選択肢を使い果たしたので、ここに来ました。どんな助けでも大歓迎です。

4

3 に答える 3

5

ClassName.this.dispose()クラスが拡張する場合、またはJFrame単にJDialog呼び出す代わりに、dispose()またはそのようなタイプの変数frame.dispose()がある場合に使用します。frameあなたの場合、それは2番目のオプションです:frame.dispose();

このようにして、とにかく持っていないの匿名実装ではなくdispose()、サブタイプのを呼び出していることをコンパイラに通知します。WindowActionListenerdispose()

于 2013-01-25T16:51:08.180 に答える
4

dispose()ではなく、JFrameまたはで呼び出す必要があります。JDialogActionListener

しかし、「メソッドdispose()はタイプnew ActionListener()に対して未定義です」というエラーが表示されます。

その通り。ActionListenerメソッドは1つだけactionPerformed()です。 http://docs.oracle.com/javase/6/docs/api/java/awt/event/ActionListener.html

于 2013-01-25T16:53:25.090 に答える
2

私が見たようにあなたは定義しました

frame = new JFrame();

クラスは拡張されませんJFrame。したがって、クラスにはそのようなメソッドがないため、呼び出すdisposeとエラーがスローされます。ActionListener

したがって、廃棄するコンポーネントを使用してください。

Example: frame.dispose();
于 2013-01-25T16:54:43.653 に答える