2

GridBagLayout の列を等間隔に配置して、標準のコンピュータ キーボードのようにボタンを配置するにはどうすればよいですか? ボタンが互いに完全に整列していない、次のようなことについて話している:QWERTYキーボード

最小限の機能的な作業例 (ずらしたgridxとのgridwidth値に注意してください):

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 の間に配置したいのですが、どうすればよいですか?

4

1 に答える 1

0

不透明度が 0 に設定されている 2 行目の先頭にダミー項目を追加することを検討しましたか? 幅を必要な正確なタブに設定するだけです。

于 2013-02-08T04:06:39.007 に答える