我很难用动作侦听器检测特定的菜单项。我不知道如何解决此问题,因为计划使用的菜单项具有相同的标题,因此我无法检测到使用标题字符串。
我尝试使用在类本身中实现的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]