Я в настоящее время новичок в java, и я ищу какую-то помощь, если вы не возражаете. Заранее прошу прощения за ссылки на Google Drive, моя популярность не позволяла мне отправлять фотографии.Проблемы с GridBagLayout в JAVA
Прежде всего, я знаю, что другие сообщения на эту тему уже существуют, но я не смог найти правильный ответ.
Моя цель состоит в том, чтобы использовать GridBagLayout, чтобы получить что-то вроде этого: https://drive.google.com/file/d/0BxoqzZbxl2ZoVWpqSTB5cjJCdkE/view?usp=sharing
Я использую JLabel для текстов областей и сетка представляет собой сетку из JButton (это 2 размера таблица JButton).
private String stateText = new String("STATE TEXT");
private String messageText = new String("MESSAGE TEXT");
BUTTONS = new JButton[3][3];
Я создал основной контейнер, менеджер компоновки и GridBagConstraints:
JPanel content = new JPanel();
content.setPreferredSize(new Dimension(200,150));
content.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
Затем я инициализированы ДжиБиСи:
gbc.gridx = 0;
gbc.gridy = 0;
An d я начал место в JLabels:
stateField.setText(stateText);
stateField.setPreferredSize(new Dimension(50, 50));
stateField.setBorder(BorderFactory.createLineBorder(Color.cyan));
//la taille en hauteur et en largeur
gbc.gridheight = 1;
gbc.gridwidth = 1;
content.add(stateField, gbc);
messageField.setText(messageText);
messageField.setPreferredSize(new Dimension(50, 100));
messageField.setBorder(BorderFactory.createLineBorder(Color.cyan));
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 2;
//Celle-ci indique que la cellule se réplique de façon verticale
gbc.fill = GridBagConstraints.VERTICAL;
content.add(messageField, gbc);
с MessageText и stateText, два струнных.
Моя проблема заключается в том, что я использовал 2 «для», чтобы поместить мой КНОПКИ [3] [3], как это:
for(int i=1; i<4; i++)
for(int j=0; j<3; j++)
{
gbc.gridy = j;
gbc.gridx = i;
gbc.gridheight=j+1;
gbc.gridwidth=i+1;
if(i==3)
{
gbc.gridwidth = GridBagConstraints.REMAINDER;
}
if(j==2)
{
gbc.gridheight = GridBagConstraints.REMAINDER;
}
gbc.gridy = j-1;
gbc.gridx = i-1;
content.add(BUTTONS[i-1][j], gbc);
}
В конце концов, результат был не один и следовало ожидать, на самом деле , исполнение дал мне это: https://drive.google.com/file/d/0BxoqzZbxl2ZoY3pRMVh1enVSWm8/view?usp=sharing
Не могли бы вы сказать мне, где я ошибаюсь? Если есть лучший способ сделать это?
Лучшим способом было бы использовать [GUI builder.] (Https://netbeans.org/features/java/swing.html) – markspace
Нет, лучше было бы использовать MigLayout. Кроме того, никогда не устанавливайте размеры или предпочтительные размеры текстовых компонентов, таких как JTextAreas. Гораздо лучше установить свойства столбца и строки. –
Спасибо, я попробую это –