У меня проблемы с определением определенного пункта меню с помощью слушателя действия.Я не знаю, как это исправить, так как пункты меню, которые я планирую использовать, имеют одинаковый заголовок, поэтому я не могу обнаружить использование строк заголовка.
Я пытался использовать 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]