GridBagLayout не отображает компонент - PullRequest
0 голосов
/ 03 мая 2020

Я написал компонент для отображения круглого индикатора выполнения. Когда я положил в BorderLayout все выглядит хорошо.

Но при установке GridBagLayout этого не видно.

    p.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    p.add(north(), gbc);
    gbc.gridx = 0;
    gbc.gridy = 1;
    p.add(west(), gbc);
    gbc.gridx = 1;
    gbc.gridy = 1;
    p.add(bar, gbc);

У меня есть не знаю, является ли это проблемой установки GridBagConstraints или другими причинами.

1 Ответ

2 голосов
/ 03 мая 2020

Но его нельзя увидеть, когда установлен GridBagLayout.

Возможно, потому что вы не переопределили метод getPreferredSize() вашего компонента, поэтому предпочтительный размер будет ( 0, 0).

GridBagLayout попытается отобразить компонент в его предпочтительном размере.

Я думаю, вам нужно будет использовать ограничение fill при добавлении компонента, чтобы он мог быть автоматически изменен, чтобы заполнить пространство, доступное в ячейке. Прочитайте раздел из учебника по Swing на Как использовать GridBagLayout для получения дополнительной информации и примеров.

Когда я помещаю его в BorderLayout, все выглядит нормально.

При добавлении в ЦЕНТР BorderLayout размер компонента будет изменен для заполнения доступного пространства.

...