使用相同的事件执行不同的操作

时间:2014-03-20 12:41:02

标签: java events mouselistener

我正在使用Java进行GUI培训。我使用 JMenuBar

JMenuBar menuBar = new JMenuBar();

这里有 JMenu

JMenu fileMenu = new JMenu("File");
栏中

有两个 JMenuItem

JMenuItem creditsItem = new JMenuItem("Credits");
JMenuItem preferenceItem = new JMenuItem("Option");

所以我将所有内容添加到栏和菜单中:

menuBar.add(fileMenu);
fileMenu.add(creditsItem);
fileMenu.add(preferenceItem);

然后我想根据点击的两个ItemMenu执行不同的操作,特别是我想打开两个不同的 JDialog

creditsItem.addMouseListener(this);
preferenceItem.addMouseListener(this);

实施 MouseListener

class MainFrame extends JFrame implements MouseListener

我必须使用

@Override
    public void mouseReleased(MouseEvent e) {
        System.out.println("Clicked!!");
    }

但问题在于识别点击了两个 JMenuItem 中的哪一个。我已经考虑过使用switch了,但是如何知道点击这两个中的哪一个是问题。

1 个答案:

答案 0 :(得分:1)

最好的办法是

@Override
    public void mouseReleased(MouseEvent e) {

        if(e.getSource()==preferenceItem){
        System.out.println("PreferenceItem");
        optionDialog = new OptionDialog();
        }
        if(e.getSource()==printItem){
        System.out.println("PrintItem");
        }

    }

实现MouseListener而不是MenuListener