Я пытаюсь создать сетку размером 10 х 10 идеально квадратных JButtons без промежутков между ними. Я считаю, что для достижения этого единственным решением является GridBagLayout. Тем не менее, я застрял на первом шаге - я не могу заставить их появляться, когда я использую цикл. Вот что у меня есть.JButtons не отображается в GridBagLayout
класса с основной функцией():
public class PixelArtist {
public static void main(String[] args) {
try {
PixelArtistGUI frame = new PixelArtistGUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
GUI Handler класс:
public class PixelArtistGUI extends JFrame {
public PixelArtistGUI() {
setTitle("PixelArtist");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
JPanel contentPane = new JPanel(new GridBagLayout());
this.add(contentPane);
contentPane.setSize(500, 500);
GridBagConstraints c = new GridBagConstraints();
JButton b;
for (int j = 0; j < 10; j++) {
for (int i = 0; i < 10; i++) {
b = new JButton();
c.gridx = i;
c.gridy = j;
contentPane.add(b,c);
}
}
}
}
Все вышесказанное делает открыт очень маленький, казалось бы пустым JFrame показано здесь:
Последнее, что я сделал, я добавил contentPane.setSize(500, 500);
, но это, похоже, не имеет никакого значения.
Я уверен, что это что-то простое - заблаговременно за помощь.
Вы не добавляете контентную рамку в свой фрейм. – FredK
@zZShort_CircuitZz Попробуйте вызвать 'this.pack()' или 'this.setSize (...)' * после * for-loop. –
Ага, который сделал это! Я новичок в этой функции. Спасибо. –