今天我有一个小问题,这可能对于这里的专业人士来说没什么了:)
我希望将我的Swing组件放在一条水平线上.我根据帧大小使用了FlowLayout并更改了componentResized()上组件的大小,但它经常出错(有时候最后一个组件放在下一行)......我决定使用BoxLayout,但是在那段代码上:
down=new JPanel(new BoxLayout(down,BoxLayout.X_AXIS));
down.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
down.add(Box.createHorizontalGlue());
down.setPreferredSize(new Dimension(300,35));
Run Code Online (Sandbox Code Playgroud)
它崩溃了:
Exception in thread "AWT-EventQueue-0" java.awt.AWTError: BoxLayout can't be shared
at javax.swing.BoxLayout.checkContainer(Unknown Source)
at javax.swing.BoxLayout.invalidateLayout(Unknown Source)
at javax.swing.BoxLayout.addLayoutComponent(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at ButtonFrame.<init>(chat.java:278)
at chat$1.run(chat.java:20)
aso...
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做,也许我可以让FlowLayout无法制作第二排,或者让盒子布局工作?
谢谢你的回复!
JPanel listPane = new JPanel();
listPane.setLayout(new BoxLayout(listPane, BoxLayout.PAGE_AXIS));
Run Code Online (Sandbox Code Playgroud)
了解如何在没有任何布局的情况下首次创建面板,然后使用现有面板设置和创建布局.这与你的不同
down=new JPanel(new BoxLayout(down,BoxLayout.X_AXIS));
Run Code Online (Sandbox Code Playgroud)
调整此行(使其成为示例中的两个单独的语句)将删除该异常.
哦,是的,BoxLayout
应该允许满足您的要求