【问题标题】:GridBagLayout staggered buttonsGridBagLayout 交错按钮
【发布时间】:2013-02-08 00:56:16
【问题描述】:

如何使 GridBagLayout 的列均匀分布,以便我可以像在标准交错计算机键盘上一样放置按钮?我说的是这样的事情,其中​​按钮彼此不太对齐:

最小功能工作示例(注意交错的gridxgridwidth 值):

import java.awt.*;
import javax.swing.*;

public class Keyboard extends JFrame {
    public static void main(String args[]) {
        (new Keyboard()).setVisible(true);
    }

    public Keyboard() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 400, 300);
        setLayout(new GridBagLayout());

        JButton[] b = new JButton[5];
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.BOTH;
        c.ipady = 20;
        c.weightx = 0.5;
        c.weighty = 0.5;
        c.insets = new Insets(2, 2, 2, 2);

        b[0] = new JButton("A");
        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 2;
        add(b[0], c);

        b[1] = new JButton("B");
        c.gridx = 2;
        c.gridy = 0;
        c.gridwidth = 2;
        add(b[1], c);

        b[2] = new JButton("C");
        c.gridx = 4;
        c.gridy = 0;
        c.gridwidth = 2;
        add(b[2], c);

        b[3] = new JButton("D");
        c.gridx = 0;
        c.gridy = 1;
        c.gridwidth = 3;
        add(b[3], c);

        b[4] = new JButton("E");
        c.gridx = 3;
        c.gridy = 1;
        c.gridwidth = 2;
        add(b[4], c);
    }
}

我希望按钮 D 的右边框一直到 A 和 B 之间的中间,而 E 应该在 B 和 C 之间。我该怎么做?

【问题讨论】:

  • 复合面板,InsetsBorders
  • 除了用于不同按钮组的多个面板之外,BoxLayout 可能会有所帮助,因为您可以添加“struts”,它基本上是一个不可见的组件,可以让您在交替行上移动组件。
  • GridBagLayout 可能不是一个好的选择,因为 new JButton("I")new JButton("W") 不会有相同的宽度,即使它们在布局中具有相同的 gridwidth 和 weightx。所以是的,您应该使用多个面板,并且您应该使用强制组件具有彼此成比例的宽度的布局。 GridLayout 可以使用“标准尺寸”键,但不能使用其他键,因此您可能需要 SpringLayout。

标签: java swing gridbaglayout


【解决方案1】:

您是否考虑在不透明度设置为 0 的第二行的开头添加一个虚拟项目?只需将其宽度设置为您需要的确切标签即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多