BoxLayout не показывает все компоненты

Я не уверен, как это исправить, у меня есть несколько JPanels (используется для рисования) внутри основной JPanel с помощью BoxLayout. JPanels имеют установленный минимальный размер и предпочтительный размер. Основная JPanel показывает только 3 из пяти, так как она слишком мала. Я попытался установить размер основного JPanel довольно большим, а также попытался добавить скроллер, но тогда ничего не показывалось.

Вот некоторый код:

public static void main(String[] args) throws XMLStreamException, IOException {
    JFrame frame = makeFrame(500, 500);
    JPanel panel = new JPanel();
    panel.setSize(1800, 1800);
    JScrollPane scroller = new JScrollPane(panel);  

    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));


    frame.add(scroller);

    test1(panel);

}
public static JFrame makeFrame(int sizex, int sizey){

    JFrame frame = new JFrame();

    frame.setTitle("FDA");
    frame.setSize(sizex, sizey);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setVisible(true);
    return frame;
}

test1 добавляет шесть JPanels размером 360x360 в panel,

С полосой прокрутки я вижу только один из JPanels, и полосы прокрутки не появляются.

Редактировать: мне нужно подождать, пока все мои расчеты не будут выполнены, прежде чем я нарисую основной JPanel, поэтому он не отображал последние 3.

1 ответ

Решение
  • frame.setVisible(true); выполняется до его JComponents созданы и добавлены (к этому уже видимому JFrame)

  • пожалуйста что test1(panel);

Другие вопросы по тегам