【发布时间】:2016-08-25 09:32:10
【问题描述】:
我在这里阅读了很多关于这个问题的信息......但我似乎不知道如何解决这个问题。 我尝试的所有解决方案都不起作用。
但是让我们从头开始: 我正在使用 Swing 构建我的界面并尝试模块化。 所以我的左侧主菜单有一个类(扩展 JPanel)。 菜单由 GridBagLayout 中的几个按钮构建而成。
但我无法让此布局与窗口(面板)的顶部对齐。 示例:面板顶部的标签、下方的文本字段、文本字段下方的按钮等。
请看我的代码:
public class LeftMenu extends JPanel {
public LeftMenu(){
GridBagLayout gbl_panel = new GridBagLayout();
gbl_panel.columnWidths = new int[] { 86, 0 };
gbl_panel.rowHeights = new int[] {32, 32, 32, 32, 32, 32, 32, 32, 32 };
gbl_panel.columnWeights = new double[] { 0.0, Double.MIN_VALUE };
gbl_panel.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0 };
setLayout(gbl_panel);
JLabel lblEnterTrunkId = new JLabel("Enter Trunk ID");
GridBagConstraints gbc_lblEnterTrunkId = new GridBagConstraints();
gbc_lblEnterTrunkId.fill = GridBagConstraints.HORIZONTAL;
gbc_lblEnterTrunkId.insets = new Insets(0, 0, 5, 0);
gbc_lblEnterTrunkId.gridx = 0;
gbc_lblEnterTrunkId.gridy = 0;
gbc_lblEnterTrunkId.anchor = GridBagConstraints.NORTH;
add(lblEnterTrunkId, gbc_lblEnterTrunkId);
}
}
标签后面有一个文本字段和一些按钮。 但我认为,这些不相关...... 如果它们是......它们看起来大多像标签(只是它们不是标签......我想你明白我的意思)
我阅读的所有指南都指向 GridBagConstraint 的锚点。它在那里....但不工作。 它在面板中间完美对齐。
如果它确实重要: 面板用作 SplitPane 的 LeftComponent:
public LeftMenu leftpanel = new LeftMenu();
splitPaneTrunks.setLeftComponent(leftpanel);
期待您的帮助。
这是我的侧边菜单的图片...水平居中。不应该这样。
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。 2) 以最小尺寸提供 ASCII 艺术或 GUI 的 预期 布局的简单绘图,如果可调整大小,则具有更大的宽度和高度。
-
在 swingx 库中显示 HorizontalLayout
-
我怀疑封闭元素没有使用它的完整垂直空间。我为解决此类问题所做的一件事是将层次结构中所有面板的背景颜色设置为不同的颜色。这使得某些类型的布局问题变得显而易见。
标签: java swing layout-manager gridbaglayout