2

「アプリケーションを閉じる」メニュー項目を使用してJavaアプリケーションを閉じたいと考えてください。

3つの可能な解決策は次のとおりです(ActionListenerまたはMouseAdapterまたはMouseListenerを使用):

menuItemClose.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
        System.exit(0);
    }
});

menuItemClose.addMouseListener(new MouseAdapter() {

    @Override
    public void mouseClicked(MouseEvent e) {
        System.exit(0);
    }
});

menuItemClose.addMouseListener(new MouseListener() {

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        System.exit(0);
    }
});

3つの解決策、そして最初の1つだけが発火します。

これの説明は何ですか?他のいくつかのコンポーネントも同じ動作をしますか?そのような場合にイベントを適切に処理するにはどうすればよいですか?

4

2 に答える 2

2

その例では、を登録することはありませんKeyListener。とにかく、登録する必要があるのは。だけActionListenerです。詳細については、メニュー項目からのイベントの処理を参照してください。

参照:

于 2011-09-24T17:30:16.323 に答える
2

Java 言語の開発者は、 を使用して menuItems からイベントを伝達するのを忘れているようaddActionListenerです。

いいえ、開発者は、Action「コンポーネントから機能と状態を分離する」ために使用することを提案しています。

于 2011-09-24T21:04:56.897 に答える