Если у вас есть только одна панель в кадре и ничего больше, попробуйте это:
- Установить BorderLayout в кадре.
- Добавить панель в кадре с BorderLayout.CENTER
Может быть, это происходит из-за цикла while в JPanel. (Не уверен, почему? Найти фактическую причину. Обновится, когда найдет ее.) Если вы замените ее методом paintComponent(g)
, все работает нормально:
public BSTest() {
//--- your code as it is
add(panel, BorderLayout.CENTER);
//-- removed panel.drawStuff();
}
public class DrawPanel extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.BLACK);
System.out.println("W:" + getSize().width + ", H:" + getSize().height);
g2d.fillRect(0, 0, getSize().width, getSize().height);
}
}
//your code as it is.