Java:JMenuItem在单击时引发异常:IllegalComponentStateException

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

我试图在程序中使用JMenuBar,但每次单击JMenuItem时,它都会抛出一个异常

我制作了一个非常简单的代码片段来解释我目前如何使用JMenuBar、JMenu和JMenuItem:

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…”