gpt4 book ai didi

java - Swing 布局管理器 : Maintaining uniform buttonSize while filling the whole horizontal space

转载 作者:行者123 更新时间:2023-11-29 05:57:28 24 4
gpt4 key购买 nike

我正在尝试构建以下可调整大小的 JPanel:

+-----------------------+
| |
| |
| |
| |
| |
| JScrollPane |
| (containing a |
| JTable) |
| |
| |
| |
| |
| |
+-----------+-----------+
| button1 | b2 |
+-----------+-----------+

我希望 button1 和 b2 始终具有相同的宽度,这意味着当整个组件水平调整大小时,两个按钮应该获得或失去相同的宽度。按钮本身之间以及按钮与面板边框之间不应有空格。也就是说,按钮应该总是占据所有可用的水平空间。请注意,按钮上的文本长度不同。

当垂直调整组件大小时,我希望 JScrollPane 获得新的高度,而带有按钮的行应始终保持相同的高度(本质上是 button1.getPreferedSize().getHeight() ).

我尝试了一大堆不同的布局管理器。我最接近的是将这两个按钮放在一个新的 JPanel 中,并将该面板的 LayoutManger 设置为 new GridLayout(0,2)。这至少为两个按钮保持了统一的宽度并填充了所有水平空间。但是,当垂直调整面板大小时,它们的高度仍然会发生变化。

对于 GroupLayout 等其他 LayoutManager,我能够通过链接按钮 (groupLayout.linkSize(button1, b2)) 来保持相同的宽度,但无法让它们填满整个水平空间.

实现此目的的最佳方法是什么以及应该使用什么 LayoutManager?

最佳答案

我强烈建议查看 MigLayout .这是一个非常灵活且易于使用的布局管理器。

如果您不想使用它,我建议制作一个带有 BorderLayout 的 JPanel,并将滚动 Pane 放在 borderlayout 的中心。然后,制作另一个具有 1 行 2 列的 GridLayout 的 JPanel,并将两个按钮添加到其中。然后,将该面板添加到具有边框布局的 JPanel 的南部区域。

代码看起来像这样:

    JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());

JPanel tablePanel = new JPanel();
JScrollPane jsp = new JScrollPane(new JTable());
tablePanel.add(jsp);
mainPanel.add(jsp, BorderLayout.CENTER);

JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(1, 2));
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
buttonPanel.add(button1);
buttonPanel.add(button2);
mainPanel.add(buttonPanel, BorderLayout.SOUTH);

this.add(mainPanel);

关于java - Swing 布局管理器 : Maintaining uniform buttonSize while filling the whole horizontal space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11510167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com