В настоящее время я кодирую проект java, и мне нужна именованная доска JPanel, чтобы содержать некоторые Плитки, которые сами являются JPanel, я добавляю их в макет соответствующего размера, но когда я добавляю все с кнопок в grouplayout в JFrame, только первая плитка имеет соответствующий размер, а другие имеют смехотворный размер, например, ширину 1p и высоту 50p или 1 * 1p.Панель GridLayout добавляет, не учитывая предпочитаемый размер
Не чувствую, что я пропускаю что-либо, все добавлено в JFrame и добавлено к правильной компоновке, с правильным количеством строк и строк, а в классе Tile задано 50 * 50p. Вот некоторые фрагменты кода, содержащие графические настройки, особенно Конструкторы:
Tile.java:
class Case extends JPanel
{
private int _color;
private boolean _star;
private Case _casePere;
private ArrayList<Case> _fils;
private int _x,_y;
public Case(int x, int y)
{
_color = 0;
_star = false;
_casePere = null;
_fils = new ArrayList<Case>();
_x = x;
_y = y;
setPreferredSize(new Dimension(50,50));
setMinimumSize(new Dimension(50,50));
setBackground(Color.WHITE);
}
Board.java:
class Board extends JPanel{
private Case[][] _grid;
private Case[] _starsp1;
private Case[] _starsp2;
// constructeur
public Board(int nbStars, int length){
_grid = new Case[length][length];
_starsp1 = new Case[nbStars];
_starsp2 = new Case[nbStars];
//graphisme
Dimension d = new Dimension(50*length, length*50);
setBackground(Color.BLACK);
setPreferredSize(d);
GridLayout layout = new GridLayout(Constante.length, Constante.length,2 ,2);
setLayout(layout);
for(int y=0; y<length; ++y)
{
for(int x=0; x<length; ++x)
{
_grid[x][y] = new Case(x,y);
add(_grid[x][y]);
}
}
, если вы хотите, я могу добавить некоторые фрагменты класс Window, но помимо Правления другие компоненты не имеют никаких проблем, и это в основном добавление и группировка некоторых компонентов. Вот скриншот вывода, так что вы можете увидеть, как рисунок на совета ведет себя
Edit: я переопределение GetX и GetY в моем классе Case снова перекрывая, своего рода немой вопрос JPanel в один, спасибо за ответы
Опубликовать надлежащую [mcve], которая демонстрирует проблему. Это создает рамку с только панелью панели и ее дочерними элементами. Сначала запустите эту часть кода, а затем добавьте другие компоненты. – camickr