Я бы хотел создать клавиатуру с графическим интерфейсом, используя Swing.
Однако во втором ряду символ a
должен начинаться не с самого левого края, а чуть правее. Поэтому я добавил c.gridx = 1
в мой код.
К сожалению, это не работает:
![https://i.imgur.com/FxJfNKs.png](https://i.stack.imgur.com/rB1MO.png)
Может ли кто-нибудь помочь мне найти причину?
Код:
this.qwertyKeyboard = new JPanel();
this.qwertyKeyboard.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 2;
c.weighty = 1;
c.weightx = 1;
char[] keysRow1 = {'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'};
char[] keysRow2 = {'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'};
char[] keysRow3 = {'⇧', 'z', 'x', 'c', 'v', 'b', 'n', 'm'};
Map<String, Integer> keysRow4 = new LinkedHashMap<>();
keysRow4.put("Draft", 4);
keysRow4.put("Space", 12);
keysRow4.put("Send", 4);
for (char key : keysRow1) {
qwertyKeyboard.add(new Key(key, l), c);
c.gridx += 2;
}
c.gridx = 1;
c.gridy = 1;
for (char key : keysRow2) {
qwertyKeyboard.add(new Key(key, l), c);
c.gridx += 2;
}
c.gridx = 0;
c.gridy = 2;
for (char key : keysRow3) {
qwertyKeyboard.add(new Key(key, l), c);
c.gridx += 2;
}
c.gridx = 0;
c.gridy = 3;
keysRow4.forEach((key, value) -> {
c.gridwidth = value;
qwertyKeyboard.add(new JButton(key), c);
c.gridx += value;
});