jscrollpane Frage

MechanU

Mitglied
Hallo, hätte da eine Frage zu jscrollpane. Und zwar ich habe da eine gui erstellt, welche aus 3 Panels besteht (first, sceond, third), liegen alle mittels GridLayout untereinander.

In First und second Panel sind nun Jlabels und Buttons enthalten, die durch eine for schleife erzeugt werden.

Wie kann man die Gui nun so gestallten, dass z.b. ab einer bestimmten Anzahl oder Größe (z.b. wenn die for Schleife mehr als 10 Zeilen erzeugt) ein jscrollpane erscheint?

Füge mal unten den Code an, den ich bis jetzt haben.

Code:
package gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import entities.Fest;

public class Gui extends JFrame {
		
	JPanel first = new JPanel();
	JPanel second = new JPanel();
	JPanel third = new JPanel();
	
	public Gui() {
		
		Container cp = getContentPane();
	//	first.setPreferredSize(new Dimension(900, 800));
		
		cp.setLayout(new GridLayout(3,1));
		//GridBagConstraints c = new GridBagConstraints();
		
		first.setLayout(null);
		first.setPreferredSize(new Dimension(1000, 300));
	//	first.add(BorderLayout.NORTH,new JButton("North"));
		
		/////////////
		second.setLayout(null);
		second.setPreferredSize(new Dimension(1000, 300));
		
		JLabel fest = new JLabel();
		fest.setSize(100, 9);
		fest.setLocation(20, 75);
		fest.setText("FEST");
		second.add(fest);
		cp.add(second);
		////////////
		
		third.setLayout(null);
		third.setPreferredSize(new Dimension(1000, 500));
		
		
		JButton[] f_edit = new JButton[30];
		JButton[] f_delete = new JButton[30];
		
		JLabel[] f_fid = new JLabel[10];
		JLabel[] f_Ort = new JLabel[50];
		JLabel[] f_datum = new JLabel[30];
		JLabel[] f_thema = new JLabel[30];
		JLabel[] f_anz_gäste = new JLabel[30];
		JLabel[] f_security = new JLabel[30];
		JLabel[] f_gewinn = new JLabel[30];
		
		JTextField[] tf = new JTextField[30];
				
		for (int i = 0; i <= 8; i++) {
				
			f_fid[i] = new JLabel();
			f_fid[i].setSize(100, 9);
			f_fid[i].setLocation(20, i * 30 + 20);
			f_fid[i].setText("Fid");
			first.add(f_fid[i]);
			
			f_Ort[i] = new JLabel();
			f_Ort[i].setSize(100, 9);
			f_Ort[i].setLocation(100, i * 30 + 20);
			f_Ort[i].setText("Ort");
			first.add(f_Ort[i]);
			
			f_datum[i] = new JLabel();
			f_datum[i].setSize(100, 9);
			f_datum[i].setLocation(180, i * 30 + 20);
			f_datum[i].setText("Datum");
			first.add(f_datum[i]);
			
			f_thema[i] = new JLabel();
			f_thema[i].setSize(100, 9);
			f_thema[i].setLocation(260, i * 30 + 20);
			f_thema[i].setText("Thema");
			first.add(f_thema[i]);
			
			f_anz_gäste[i] = new JLabel();
			f_anz_gäste[i].setSize(100, 9);
			f_anz_gäste[i].setLocation(340, i * 30 + 20);
			f_anz_gäste[i].setText("Anz_Gäste");
			first.add(f_anz_gäste[i]);
			
			f_security[i] = new JLabel();
			f_security[i].setSize(100, 9);
			f_security[i].setLocation(420, i * 30 + 20);
			f_security[i].setText("Security");
			first.add(f_security[i]);
			
			f_gewinn[i] = new JLabel();
			f_gewinn[i].setSize(100, 9);
			f_gewinn[i].setLocation(500, i * 30 + 20);
			f_gewinn[i].setText("Gewinn");
			first.add(f_gewinn[i]);
			
			/*
			tf[i] = new JTextField();
			tf[i].setSize(300, 15);
			tf[i].setLocation(100, i * 30 + 20);
			first.add(tf[i]);
			tf[i].setVisible(true);
			*/
			
			f_edit[i] = new JButton();
			f_edit[i].setSize(100, 15);
			f_edit[i].setLocation(760, i * 30 + 20 - 3);
			f_edit[i].setText("bearbeiten");
			first.add(f_edit[i]);
			
			f_delete[i] = new JButton();
			f_delete[i].setSize(100, 15);
			f_delete[i].setLocation(890, i * 30 + 20 - 3);
			f_delete[i].setText("löschen");
			first.add(f_delete[i]);
		}

		cp.add(first);	
		//cp.add(new JLabel("ein einfaches Label"));
		//cp.add(new JLabel("ein einfaches Label"));
		
		JButton[] s_edit = new JButton[30];
		JButton[] s_delete = new JButton[30];
		
		JLabel[] s_svnr = new JLabel[10];
		JLabel[] s_vorname = new JLabel[50];
		JLabel[] s_nachname = new JLabel[30];
		JLabel[] s_gebdatum = new JLabel[30];
		JLabel[] s_Wohnort = new JLabel[30];
		JLabel[] s_plz = new JLabel[30];
		JLabel[] s_funktion = new JLabel[30];
		JLabel[] s_angestellt_seit = new JLabel[30];
		JLabel[] s_fid = new JLabel[30];		
		
		for (int i = 0; i <= 8; i++) {
			
			s_svnr[i] = new JLabel();
			s_svnr[i].setSize(100, 9);
			s_svnr[i].setLocation(20, i * 30 + 20);
			s_svnr[i].setText("SVNR");
			third.add(s_svnr[i]);
			
			s_vorname[i] = new JLabel();
			s_vorname[i].setSize(100, 9);
			s_vorname[i].setLocation(100, i * 30 + 20);
			s_vorname[i].setText("Vorname");
			third.add(s_vorname[i]);
			
			s_nachname[i] = new JLabel();
			s_nachname[i].setSize(100, 9);
			s_nachname[i].setLocation(180, i * 30 + 20);
			s_nachname[i].setText("Nachname");
			third.add(s_nachname[i]);
			
			s_gebdatum[i] = new JLabel();
			s_gebdatum[i].setSize(100, 9);
			s_gebdatum[i].setLocation(260, i * 30 + 20);
			s_gebdatum[i].setText("GebDatum");
			third.add(s_gebdatum[i]);
			
			s_Wohnort[i] = new JLabel();
			s_Wohnort[i].setSize(100, 9);
			s_Wohnort[i].setLocation(340, i * 30 + 20);
			s_Wohnort[i].setText("Wohnort");
			third.add(s_Wohnort[i]);
			
			s_plz[i] = new JLabel();
			s_plz[i].setSize(100, 9);
			s_plz[i].setLocation(420, i * 30 + 20);
			s_plz[i].setText("PLZ");
			third.add(s_plz[i]);
			
			s_funktion[i] = new JLabel();
			s_funktion[i].setSize(500, 9);
			s_funktion[i].setLocation(500, i * 30 + 20);
			s_funktion[i].setText("Funktion");
			third.add(s_funktion[i]);
			
			s_angestellt_seit[i] = new JLabel();
			s_angestellt_seit[i].setSize(710, 9);
			s_angestellt_seit[i].setLocation(580, i * 30 + 20);
			s_angestellt_seit[i].setText("Ang_seit");
			third.add(s_angestellt_seit[i]);
			
			s_fid[i] = new JLabel();
			s_fid[i].setSize(640, 9);
			s_fid[i].setLocation(660, i * 30 + 20);
			s_fid[i].setText("Fid");
			third.add(s_fid[i]);
			
			s_edit[i] = new JButton();
			s_edit[i].setSize(100, 15);
			s_edit[i].setLocation(760, i * 30 + 20 - 3);
			s_edit[i].setText("bearbeiten");
			third.add(s_edit[i]);
			
			s_delete[i] = new JButton();
			s_delete[i].setSize(100, 15);
			s_delete[i].setLocation(890, i * 30 + 20 - 3);
			s_delete[i].setText("löschen");
			third.add(s_delete[i]);
		}

		cp.add(third);
					
		pack();
		setVisible(true);
	}
}

Ich hoffe mir kann da wer weiter helfen.

Eine Frage hätte ich noch, und zwar GridLayout erstellt mir ja immer gleich große Boxen (z.B. GridLayout(3,1) 3 Zeilen 1 Spalte). Wie kann ich es aber machen, dass z.b. die oberste Box nur ganz klein ist?

Danke schonmal

mfg
 
Moin,

ich habe da eine gui erstellt, welche aus 3 Panels besteht (first, sceond, third), liegen alle mittels GridLayout untereinander.

In First und second Panel sind nun Jlabels und Buttons enthalten, die durch eine for schleife erzeugt werden.

Wie kann man die Gui nun so gestallten, dass z.b. ab einer bestimmten Anzahl oder Größe (z.b. wenn die for Schleife mehr als 10 Zeilen erzeugt) ein jscrollpane erscheint?
Meinst Du die Pane, in der Du dann die 3 Panel einfügst?
Wenn ich Dich richtig verstehe, kannst Du hier immer eine Scrollpane nehmen, da die Laufbalken nur dann angezeigt, wenn es der entsprechende Bereich erfordert!

Eine Frage hätte ich noch, und zwar GridLayout erstellt mir ja immer gleich große Boxen (z.B. GridLayout(3,1) 3 Zeilen 1 Spalte). Wie kann ich es aber machen, dass z.b. die oberste Box nur ganz klein ist?
Hier kann ich nichts konkretes zu sagen, da ich damit kaum arbeite.
Vermutlich musst Du halt die erste Box gemäß Deinen Vorstellungen anders formatieren ....

Gruß
Klaus
 
Bei der ersten Frage stimme ich MechanU zu.
Für Dein zweites Anliegen empfehle ich Dir einen anderen layoutManager. Auch wenn für viele GridBagLayout gruselig erscheint und vermutlich intuitiver zu verwendende LayoutManager mittlerweile im Umlauf sind, (aber auch nicht im Standard-Java existieren), kann ich Dir wirklich empfehlen Dich näher mit GridBagLayout auseinanderzusetzen.

Takidoso
 
Zurück