Swing Problem mit Scrollbars in einem JPanel eines JWindows

  • Themenstarter Themenstarter ^DaKu
  • Beginndatum Beginndatum
D

^DaKu

Gast
Moin.

Ich habe hier ein kleine Problem mit Scrollbars in einem JPanel eines JWindows

hier mal das Window:
Java:
public class InfoVO extends JWindow
{
	JPanel mvp;
	JScrollPane jsp;
	
	static JLabel info_b = new JLabel();
	{
		this.getContentPane().add(info_b);
		info_b.setBounds(5, 5, 150, 50);
		info_b.setText("InfoB");
		info_b.setVisible(true);
	}
	
	static JLabel info_c = new JLabel();
	{
		this.getContentPane().add(info_c);
		info_c.setBounds(5, 60, 150, 50);
		info_c.setText("InfoC");
		info_c.setVisible(true);
	}
	
	static JLabel info_a = new JLabel();
	{
		this.getContentPane().add(info_a);
		info_a.setBounds(5, 115, 150, 150);
		info_a.setText("InfoA");
		info_a.setVisible(true);
	}	
	
	public InfoVO()
	{		
		mvp = new JPanel();		
		jsp = new JScrollPane(mvp);
		jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);		
		this.getContentPane().add(jsp, BorderLayout.CENTER);
		this.setVisible(true);		
	}
}

Aufgerufen wird es über einen Button mit der Größe (also die Window-Größe)

Java:
winfo.setBounds(100, 100, 250, 200);

Nun wird ja der Horizontale Scrollbar auch angezeigt, ist jedoch nicht scrollbar, sollte aber da ja das info_a Label nach unten hin größer als das main-Label ist.

Wie bekomme ich es nun hin, das es auch scrollbar wird?

Danke schon mal & MfG
 
Und wo sollte ich dann das Panel dem Scrollpane hinzufügen, damit es scrollbar wird, oder ist meine Überlegung diesbezüglich falsch?
 
Generell ist der komplette Klassenaufbau merkwürdig. In der objektorientierten Programmierung sollte man statische Variablen meiden.
Ausserdem sollte man mit LayoutManagern arbeiten und nicht mit einen Null Layout. Ich hab's im Bsp mal gemacht, damit Deine setBounds() auf die Label zum Tragen kommen. Hat allerdings zur Konsequenz, dass man sich selbst um die Definition der PreferredSize des Panels kümmern muss, da von dieser abhängt, ob ein ScrollPane die ScrollBars anzeigt oder nicht.
Java:
public class InfoVO extends JWindow {
	JPanel mvp;
	JScrollPane jsp;

	public InfoVO() {
		mvp = new JPanel();
		mvp.setLayout(null);
		
		JLabel info_a = new JLabel("InfoA");
		JLabel info_b = new JLabel("InfoB");
		JLabel info_c = new JLabel("InfoC");
		info_a.setBounds(5, 115, 150, 150);
		info_b.setBounds(5, 5, 150, 50);
		info_c.setBounds(5, 60, 150, 50);
		
		mvp.add(info_a);
		mvp.add(info_b);
		mvp.add(info_c);
		
		mvp.setPreferredSize(new Dimension(155, 265));
			
		jsp = new JScrollPane(mvp);
		jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		this.getContentPane().add(jsp, BorderLayout.CENTER);
		this.setBounds(0, 0, 200, 100);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}
}
 
das hat noch gefehlt:
Java:
mvp.setPreferredSize(new Dimension(155, 265));

Ja, der Kassenaufbau, so habe ich zusammen, was m.M. zusammen gehört, lässt sich im Eclipse besser überblicken, wenn man Folding benutzt und Positionieren tue ich lieber von Hand, Gewohnheit 😉

Aber vielen Dank.

MfG
 

Zurück
Oben