使用actionListener检测特定的JMenuItems?

时间:2019-05-04 05:43:32

标签: java jmenuitem

我很难用动作侦听器检测特定的菜单项。我不知道如何解决此问题,因为计划使用的菜单项具有相同的标题,因此我无法检测到使用标题字符串。

我尝试使用在类本身中实现的actionlistener,以及在实现中使用的私有类。

private JMenuBar menuBar;
private JMenu p;
private JMenuItem pic;      
public void createMenu(){
      JMenuBar menuBar = new JMenuBar();
      JFrame frame = new JFrame();
      frame.setTitle("Menu");
      frame.setSize(400,400);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setJMenuBar(menuBar);

      JMenu p = new JMenu("Pawn");   
      p.addMouseListener(new mouse());
      menuBar.add(p);

      JMenuItem pic = new JMenuItem("Picture");
      pic.addActionListener(new actor());
      p.add(pic);
}
private class actor implements ActionListener{        
     public void actionPerformed(ActionEvent e){
         System.out.println("Click");  
         System.out.println(e.getSource());
        if(e.getSource()==pic){
          System.out.println("Detected");   
        }

      }
    }

我希望发生的事情是,它不会将if语句的两端都识别为相同的,但是显然这并不相等,而且我也不知道如何解决此问题。

以下输出:

Click
javax.swing.JMenuItem[,1,3,77x21,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.metal.MetalBorders$MenuItemBorder@4dcc4c,flags=264,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=true,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Picture]

0 个答案:

没有答案