Можно ли задать определенный размер границы для JFrame, когда он содержит GridLayout?
Это класс образец
import javax.swing.*;
import java.awt.*;
public class Image {
public static void main(String[] args) {
JFrame f = new JFrame();
Layout lo = new Layout();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(new Dimension(500, 500));
f.setLocationRelativeTo(null);
f.getContentPane().add(lo.getGUI(), BorderLayout.CENTER);
f.setVisible(true);
}
}
Это класс Layout, который поставляется с ним
import java.awt.*;
import javax.swing.*;
public class Layout {
private JPanel p;
public Layout() {
p = new JPanel(new GridLayout(5, 5, 1, 1));
p.setBackground(Color.BLACK);
JLabel[][] lbs = new JLabel[5][5];
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++) {
lbs[i][j] = new JLabel(".", JLabel.CENTER);
lbs[i][j].setBackground(Color.WHITE);
lbs[i][j].setOpaque(true);
p.add(lbs[i][j]);
}
}
public JComponent getGUI() {
return p;
}
}
Результат кода заключается в следующем:
Итак, мой вопрос в том, как я могу размер фиксированного размера, как изображение выше? Я хочу позже добавить компоненты, такие как кнопки на нем позже. Я не могу понять, как установить фиксированный размер JPanel после применения GridLayout к нему. Я добавил GridLayout, потому что мне нужно отобразить что-то похожее на шахматы. Я ничего не трону, кроме кнопок. JPanel для просмотра, вот и все.
Следует упомянуть, что я буду менять точки в середине сетки на другие символы (такие как! Или #), чтобы представлять объекты в пространстве 5x5. Я использую JLabel для представления объектов. Если я использую GridBagLayout, все символы раздаются вместе в 1 области.
картинка на дне является JPanel, который заполняет всю JFrame. Я хочу, чтобы JPanel не занимал весь JFrame, поэтому у меня есть место для добавления дополнительных компонентов, таких как кнопки – NoobestPros
@NoobestPros: вам нужно вложить JPanels для достижения этого эффекта и позволить простое создание сложных графических интерфейсов. Пожалуйста, см. Код в редакции для ответа. –
Например, поскольку @camickr изложено в удаленном комментарии, опубликованном при создании этого примера, если вы вставляете свой GrinLayout-используя JPanel в BorderLayout с помощью одного, вы можете создать желаемый графический интерфейс. –