Java Komponenten innerhalb JSCrollPane untereinander anordnen?

2 Antworten

Ein sehr simples, fixes Beispiel:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
 
public class ScrollDemo extends JFrame {

  private JPanel contentPanel;

  private int counter = 0;
  
  public ScrollDemo() {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(300, 200);
    setLayout(new GridLayout(2, 1));
    init();
    setVisible(true);
  }

  public void init() {
    contentPanel = new JPanel();
    contentPanel.setSize(600, 400);
    contentPanel.setLayout(new FlowLayout());
   
    JScrollPane scrollpane = new JScrollPane(contentPanel);
    getContentPane().add(scrollpane);

    JButton button = new JButton("add");
    button.addActionListener(e -> {
      contentPanel.add(new JLabel("hello " + ++counter));
      contentPanel.revalidate();
      contentPanel.repaint();
    });
    getContentPane().add(button);
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        new ScrollDemo();
      }
    });
  }
}

Via ActionListener werden dem Panel, welches durch das ScrollPane erweitert wird, neue Elemente zugefügt. Danach wird eine Revalidierung des Elements angefordert und das Neuzeichnen der Komponente veranlasst.

Einfach einen passenden Container mit einem gewünschten LayoutManager ausstatten, diesen in die ScrollPane packen und, sofern erwünscht, auf bestimmte Ereignisse horchen und dann ggf. den Inhalt neu ausrichten. :)

Woher ich das weiß:eigene Erfahrung