我正在尝试从接收作为参数的JMenuItems的类中检索JMenuBar中的JFrame。我已经做了一些阅读,我想我理解JMenuBar包含JMenu,但是那些不直接包含JMenuItems,对吗?
我到目前为止所拥有的(显然,它不起作用!)
JFrame mainWindow; ..。 Component[]菜单= mainWindow.getJMenuBar().getComponents();
那么,我如何才能获得,最好的话,一个数组的所有的JMenuItems我的JFrame?然后,我将简单地使他们一个接一个之后。
谢谢!
发布于 2014-07-20 12:30:58
是的,你也可以买到JMenu和JMenuItem。
使用JMenuBar#getMenu()和JMenu#getMenuComponent()方法获得所需的输出。
示例程序:
JMenuBar menubar1 = getJMenuBar();
for (int i = 0; i < menubar1.getMenuCount(); i++) {
JMenu menu1 = menubar1.getMenu(i);
System.out.println("Menu:" + menu1.getText());
for (int j = 0; j < menu1.getMenuComponentCount(); j++) {
java.awt.Component comp = menu1.getMenuComponent(j);
if (comp instanceof JMenuItem) {
JMenuItem menuItem1 = (JMenuItem) comp;
System.out.println("MenuItem:" + menuItem1.getText());
}
}
}发布于 2014-07-20 12:27:34
JMenu类有它的API将显示的方法,这些方法允许您轻松地获得JMenuItems:getItemCount()和getItem(int pos)。同时也有getMenuElements()。
发布于 2014-07-20 13:33:00
谢谢一堆人!这结果非常有效,比预期的要容易得多:)
for (int i = 0; i < mainWindow.getJMenuBar().getMenuCount(); i++) { for (int j = 0; j < mainWindow.getJMenuBar().getMenu(i).getItemCount(); j ++) { if (mainWindow.getJMenuBar().getMenu(i).getItem(j) != null) { mainWindow.getJMenuBar().getMenu(i).getItem(j).setEnabled(true); } } }
https://stackoverflow.com/questions/24850424
复制相似问题