Java BoxLayout返回错误BoxLayout can';不能分享

Java BoxLayout返回错误BoxLayout can';不能分享,java,swing,boxlayout,Java,Swing,Boxlayout,以下用于布局组件的代码返回错误 public class MainPanel extends JPanel { private JTextField txt1, txt2; private JButton btnCopy, btnCut, btnDel; private JPanel wrapper1, wrapper2; public MainPanel() { txt1 = new JTextField(); txt2

以下用于布局组件的代码返回错误

public class MainPanel extends JPanel
{
    private JTextField txt1, txt2;
    private JButton btnCopy, btnCut, btnDel;
    private JPanel wrapper1, wrapper2;

    public MainPanel()
    {
        txt1 = new JTextField();
        txt2 = new JTextField();

        btnCopy = new JButton("Copy");
        btnCut = new JButton("Cut");
        btnDel = new JButton("Delete");

        wrapper1 = new JPanel();
        wrapper1.setLayout(new BoxLayout(wrapper1, BoxLayout.Y_AXIS));
        wrapper1.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        wrapper1.add(txt1);
        wrapper1.add(txt2);

        wrapper2 = new JPanel();
        wrapper2.setLayout(new BoxLayout(wrapper1, BoxLayout.Y_AXIS));
        wrapper2.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        wrapper2.add(btnCopy);
        wrapper2.add(btnCut);
        wrapper2.add(btnDel);

        setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
        add(wrapper1);
        add(wrapper2);
    }
}
我知道类似的问题 但是它没有解决我的问题,因为我不是使用JFrame而是使用JPanel

错误:

Exception in thread "AWT-EventQueue-0" java.awt.AWTError: BoxLayout can't be shared
at javax.swing.BoxLayout.checkContainer(BoxLayout.java:464)
at javax.swing.BoxLayout.invalidateLayout(BoxLayout.java:248)
at javax.swing.BoxLayout.addLayoutComponent(BoxLayout.java:281)
at java.awt.Container.addImpl(Container.java:1120)
at java.awt.Container.add(Container.java:410)
at copycut.MainPanel.<init>(MainPanel.java:39)
at copycut.CopyCut.<init>(CopyCut.java:23)
at copycut.CopyCut$1.run(CopyCut.java:39)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:697)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
线程“AWT-EventQueue-0”java.AWT.AWT中出现异常:无法共享BoxLayout 位于javax.swing.BoxLayout.checkContainer(BoxLayout.java:464) 在javax.swing.BoxLayout.invalidateLayout(BoxLayout.java:248)中 位于javax.swing.BoxLayout.addLayoutComponent(BoxLayout.java:281) 位于java.awt.Container.addImpl(Container.java:1120) 在java.awt.Container.add处(Container.java:410) 在copycut.MainPanel.(MainPanel.java:39) copycut.copycut.(copycut.java:23) copycut.copycut$1.run(copycut.java:39) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:727) 在java.awt.EventQueue.access$200(EventQueue.java:103) 在java.awt.EventQueue$3.run(EventQueue.java:688) 在java.awt.EventQueue$3.run(EventQueue.java:686) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:697) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:161) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:150) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
我认为:

wrapper2.setLayout(new BoxLayout(wrapper1, BoxLayout.Y_AXIS));
您要执行以下操作:

wrapper2.setLayout(new BoxLayout(wrapper2, BoxLayout.Y_AXIS));

现在,您可以使用
wrapper1
为父级创建一个新的
BoxLayout
,并尝试通过将其设置为
wrapper2
的布局来“共享”它。这只是输入错误(或者很可能是快速复制/粘贴后的一些遗漏):p

添加堆栈跟踪,以便我们能够更快地帮助您!还要考虑<代码> javax .Swing .box <代码>,“一个轻量级容器,使用<代码> BoxLayout < /Cord>对象作为其布局管理器。”