【发布时间】:2014-08-15 03:05:57
【问题描述】:
我正在为我的第一个自定义 Swing 程序窗口创建自定义装饰,我刚开始使用布局管理器,看起来我做错了什么,首先我使用 BorderLayout 和 BorderLayout.EAST 或 WEST 显示在角落,但它只允许一个面板显示在角落,就像它不会连续显示一样。
看起来像这样:
(来源:gyazo.com)
使用该代码:
this.panel.setLayout(new BorderLayout());
this.panel.add(this.createToolButton("X"), BorderLayout.EAST);
但是如果我添加另一个面板,最新的面板将在前一个面板(注意我使用面板是因为 JButton 讨厌我,它的默认样式不允许我制作它平)
现在我使用了 GridBagLayout
this.panel.setLayout(new GridBagLayout());
Box panels = new Box(BoxLayout.X_AXIS);
panels.add(this.createToolButton("X"));
this.panel.add(panels, BorderLayout.EAST);
但是在运行时我得到了
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: cannot add to layout: constraints must be a GridBagConstraint
at java.awt.GridBagLayout.addLayoutComponent(Unknown Source)
我做错了什么?我怎样才能让面板一个接一个地向右浮动?
编辑:
this.panel.setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
gc.fill = GridBagConstraints.WEST;
this.panel.add(this.createToolButton("X"), gc);
【问题讨论】:
-
this.panel.setLayout(new GridBagLayout());和 this.panel.add(panels, BorderLayout.EAST);真的不适合在一起。您必须将 Layout 设置为 new BorderLayout()
标签: java swing layout jpanel gridbaglayout