例子代码及问题如下
JMenu menu;
JMenuBar menuBar = new JMenuBar();
JMenuItem menuItem;
menu = new JMenu( "文件 ");
menuBar.add(menu);
menuItem = menu.add(new JMenuItem( "新建 "));
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 在这里如何获取menu 的引用
}
});
我想做的时把某个文件夹的内容(文件和文件)导到一个树状菜单中,当点击相应的菜单后打开对应的文件
------解决方案--------------------
不了解,帮忙顶
------解决方案--------------------
getParent()
------解决方案--------------------
// 在任意位置的JMenu通过getParent()得到的类名
// 0javax.swing.JMenu或者JMenuItem(自己)
// 1javax.swing.JPopupMenu
// 2javax.swing.JPanel
// 3javax.swing.JLayeredPane
// 4javax.swing.JRootPane
// 5view.EditFrame
getParent获得的是javax.swing.JPopupMenu,不是它的父菜单JMenu,而是JMenu的JPopupMenu
------解决方案--------------------
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 在这里如何获取menu 的引用
}
});
这个是匿名类的写法 你可以参照JBuilder里的写法 写一个实现ActionListener接口的类
------解决方案--------------------
JMenu menu;
JMenuBar menuBar = new JMenuBar();
JMenuItem menuItem;
menu = new JMenu( "文件 ");
menuBar.add(menu);
menuItem = menu.add(new JMenuItem( "新建 "));
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 在这里如何获取menu 的引用
menu.doSomething(); //直接用
}
});
或者
class MenuItemActionListener implements ActionListener {
private Menu menu;
public MenuItemActionListener(Menu menu) {
this.menu = menu;
}
public void actionPerformed(ActionEvent e) {
// 在这里如何获取menu 的引用
menu.doSomething(); //直接用
}
}
menu = new JMenu( "文件 ");
menuBar.add(menu);
menuItem = menu.add(new JMenuItem( "新建 "));
menuItem.addActionListener(new MenuItemActionListener(menu));