GridBagLayout の列を等間隔に配置して、標準のコンピュータ キーボードのようにボタンを配置するにはどうすればよいですか? ボタンが互いに完全に整列していない、次のようなことについて話している:
最小限の機能的な作業例 (ずらした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 の間に配置したいのですが、どうすればよいですか?