我想在windowbuilder / java中创建动态菜单,所以我创建了Vector来保存JMenuItem,但是我遇到了ActionListener()如何引用同一个对象的问题。 因此,我如何访问引用Object执行ActionListener()的操作?
我的代码是
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnNewMenu = new JMenu("File");
menuBar.add(mnNewMenu);
mnNewMenu.add(mntmNewMenuItem);
Vector<JMenuItem> x=new Vector<JMenuItem>();
for(Integer i=0;i<10;i++)
{
x.add(new JMenuItem(i.toString()));
x.get(i).addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.out.println(this.getText()); //this should refer to the same object x.get(i)
}
});
mnNewMenu.add(x.get(i));
}
答案 0 :(得分:4)
使用getSource
获取对源组件的引用
JMenuItem menuItem = (JMenuItem) event.getSource();
String text = menuItem.getText();