здесь я пытаюсь привязать компоненты (кнопки) к боковой панели, но я, очевидно, что-то пропускаю с помощью GridBagConstraints. Я хотел бы, чтобы они имели посылку, если это было возможно; любая идея, как я буду делать что-то вроде этого ? Могу ли я просто использовать вставки для заполнения? Приветствия за любую помощь.GridBagLayout не использует привязку
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
@SuppressWarnings("serial")
public class PlayGamePanel extends JComponent{
@SuppressWarnings("unused")
JComponent GamePanel2() throws IOException {
JComponent GamePanel = new JLabel();
//Setting up the gridbaglayout
GamePanel.setLayout(new GridBagLayout());
GridBagConstraints gbLayout = new GridBagConstraints();
/*//Creating a button to test out switching panels
*
JButton testButton = new JButton ("test");
GamePanel.add(testButton);*/
//Creating buttons for answering the quiz
gbLayout.gridx = 0;
gbLayout.gridy = 0;
gbLayout.weightx = 1.0;
gbLayout.anchor = GridBagConstraints.NORTHWEST;
gbLayout.insets = new Insets(20, 20, 20, 20);
JButton AnswerOneButton = new JButton("Answer One");
GamePanel.add(AnswerOneButton);
GamePanel.add(AnswerOneButton, gbLayout);
gbLayout.gridx = 0;
gbLayout.gridy = 0;
gbLayout.weightx = 1.0;
gbLayout.anchor = GridBagConstraints.NORTHEAST;
gbLayout.insets = new Insets(20, 20, 20, 20);
JButton AnswerTwoButton = new JButton("Answer Two");
GamePanel.add(AnswerTwoButton);
GamePanel.add(AnswerTwoButton, gbLayout);
gbLayout.gridx = 0;
gbLayout.gridy = 0;
gbLayout.weightx = 1.0;
gbLayout.anchor = GridBagConstraints.SOUTHEAST;
gbLayout.insets = new Insets(20, 20, 20, 20);
JButton AnswerThreeButton = new JButton("Answer Three");
GamePanel.add(AnswerThreeButton);
GamePanel.add(AnswerThreeButton, gbLayout);
gbLayout.gridx = 0;
gbLayout.gridy = 0;
gbLayout.weightx = 1.0;
gbLayout.anchor = GridBagConstraints.SOUTHWEST;
gbLayout.insets = new Insets(20, 20, 20, 20);
JButton AnswerFourButton = new JButton("Answer Four");
GamePanel.add(AnswerFourButton);
GamePanel.add(AnswerFourButton, gbLayout);
return GamePanel;
}
}
Отлично, спасибо за ссылку, дайте это прочитать. Что касается кода, я думаю, что он должен работать хорошо, но он отправляет его в крайнее левое положение, а не вверху слева от контейнера. Просто попробовал использовать NORTHEAST, но не повезло. EDIT: не видел вашего редактирования, попробует все это сейчас, спасибо! – Icy100
Эй, спасибо за вашу помощь, но я до сих пор не могу заставить ее работать - я редактировал мой код до сих пор в своем оригинальном посте; У меня есть чувство, что это связано с моими весовыми значениями. Есть ли вероятность увидеть ваш код для сравнения? – Icy100
Вам нужно изменить значения 'gridx' и' gridy' в соответствии с ячейками, которые вы хотите, чтобы кнопки отображались, используя '0' означает, что все они находятся в одной ячейке ... – MadProgrammer