JPanel panel = new JPanel(new GridLayout(0,1));
JScrollPane contentpane = new JScrollPane(panel);
JButton add = new JButton("ADD");
add.actionListener(new ActionListener() {
public void actionPerformed(){
MyPanel newpanel = new MyPanel("title","Button"); //MyPanel is a class which extends JPanel and contains constructor MyPanel(String TitleToSet ,String ButtonTitleTOAdd)
panel.add(newpanel);
panel.repaint();
}) ;
Я использовал этот код, думая, что он добавит MyPanel в макет сетки динамически и «панель» будет прокручивать если добавить больше «MyPanel» s. Однако это было не так, первая «MyPanel» заполнила целую «панель» и добавила вторую «MyPanel» (нажав кнопку «Добавить»), первая «MyPanel» была сжата, чтобы освободить место для второго. и при добавлении большего, все «MyPanel» были вписаны в окно просмотра, а не «прокручивали панель». Как добавить эти «MyPanel» динамически и сделать «панель» прокручиваемой при добавлении большего количества из них? Любая помощь будет оценена по достоинству.Динамически добавить фиксированную высоту панелей к JScrollPane
Спасибо, он работал отлично ,, я даже пытался использовать абсолютный макет. Однако я не понял эту часть, когда вы задали предпочтительный размер, почему вы установили ширину панели 0 ?? [panel.setPreferredSize (новый размер (0, 100 * panel.getComponents(). length));] –
JScrollPane устанавливает ширину представления в max (view.getPreferredSize(). getWidth(), scrollPane.getWidth()). Установив предпочтительную ширину представления равным 0, я гарантирую, что прокрутка выполняется только по вертикали. –