Java:JMenuItem在单击时引发异常:IllegalComponentStateException
我试图在程序中使用JMenuBar,但每次单击JMenuItem时,它都会抛出一个异常 我制作了一个非常简单的代码片段来解释我目前如何使用JMenuBar、JMenu和JMenuItem:Java:JMenuItem在单击时引发异常:IllegalComponentStateException,java,exception,jmenu,jmenuitem,jmenubar,Java,Exception,Jmenu,Jmenuitem,Jmenubar,我试图在程序中使用JMenuBar,但每次单击JMenuItem时,它都会抛出一个异常 我制作了一个非常简单的代码片段来解释我目前如何使用JMenuBar、JMenu和JMenuItem: import javax.swing.*; public class JMenuTest extends JFrame { JMenuTest() { super("Tester"); JMenuBar tb = new JMenuBar(); JM
import javax.swing.*;
public class JMenuTest extends JFrame {
JMenuTest() {
super("Tester");
JMenuBar tb = new JMenuBar();
JMenu a = new JMenu("File");
JMenuItem z = new JMenuItem("Öppna osv");
tb.add(a);
a.add(z);
setJMenuBar(tb);
setSize(300, 300);
setVisible(true);
}
public static void main(String[] args) {
new JMenuTest();
}
}
这是堆栈跟踪:
java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1995)
at java.awt.Component.getLocationOnScreen(Component.java:1969)
at apple.awt.CAccessibility$22.call(CAccessibility.java:370)
at apple.awt.CAccessibility$22.call(CAccessibility.java:368)
at apple.awt.CToolkit$CallableWrapper.run(CToolkit.java:1125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at apple.awt.CToolkit$CPeerEvent.dispatch(CToolkit.java:1215)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:676)
at java.awt.EventQueue$2.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
非常感谢您的回复 我没有从你的代码中得到异常。我可以点击菜单项任意次数,效果很好。你的例子对我很好,对我也很好。你有更多的代码吗?你有没有可能在你的真实代码中错过了上面的一些步骤?这真的很奇怪。这对我不起作用。我已经尝试了Java6和Java7。首先,我通过Eclipse运行它——但我也尝试通过终端手动编译和运行。我猜你在windows机器上试过了?开始认为这可能是osx的事情?我注意到异常树中的一行写着“apple.awt…”