我试图从接收JFrame作为参数的类中检索JMenuBar中的JMenuItems。我做了一些阅读,我想我明白JMenuBar包含JMenu,但那些不直接包含JMenuItems,对吗?
到目前为止我所拥有的(显然,它不起作用!):
JFrame mainWindow;
[...]
Component [] menus = mainWindow.getJMenuBar()。getComponents();
那么我怎么能获得,最多说,我的JFrame的所有JMenuItems的数组?然后,我将逐个启用它们。
谢谢!
答案 0 :(得分:3)
是的,您也可以获得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());
}
}
}
答案 1 :(得分:1)
JMenu类具有its API将显示的方法,允许您轻松获取JMenuItems:getItemCount()
和getItem(int pos)
。还有getMenuElements()
。
答案 2 :(得分:0)
非常感谢!事实证明这很有效,而且比预期更容易:)
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); } } }