Обнаружение конкретных JMenuItems с помощью actionListener? - PullRequest
0 голосов
/ 04 мая 2019

У меня проблемы с определением определенного пункта меню с помощью слушателя действия.Я не знаю, как это исправить, так как пункты меню, которые я планирую использовать, имеют одинаковый заголовок, поэтому я не могу обнаружить использование строк заголовка.

Я пытался использовать 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]
...