JPanel mit Border, Scrollpane und Checkboxen

Saban

Erfahrenes Mitglied
Hallo Zusammen!

ich muss für die Arbeit ein Layout zusammen bauen welches ein JPanel auf einem Frame enthält. In das Frame kommen eine unbekannte Anzahl an Checkboxen, d. h. falls die angezeigte Fläche auf dem Frame nicht ausreicht soll ein Scrollpane erscheinen das die Checkboxen angezeigt werden können die außerhalb des Panels liegen.
Ich weiß nicht ob ich mein Problem erklären konnte. Das Panel wird auf dem Frame mit einer größe von 200, 200 angezeit. Falls nun 10 Checkboxen angezeigt werden sollen geht das nicht da die Fläche auf dem Frame zu klein ist dann soll auf dem Panel eine Scrollpane erscheinen mit der man hoch und runter scrollen kann.

Das ist bis jetzt mein Ansatz:
Java:
import java.awt.BorderLayout;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class BK_Panel extends JPanel{
	
	/**
     * Konstruktor
     */
	public BK_Panel(String titel){
		
		setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), titel));
		
	}	
}

MfG
Saban
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

dein Ansatz ist sehr klein gehalten. Es kommt abgesehen vom Panel nichts von dem vor, dass du brauchst.
Hier im Forum wird auf Eigeninitiative Wert gelegt. Also würde ich vorschlagen, dass du es erst selbst mal versuchst.

MFG

Sascha
 
Hi!

also mein Ansatz sieht so aus. Leider wird aber immer noch kein Scrollpane angezeigt und ich hab keine Ahnung wieso :confused:

Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.sql.SQLException;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class BK_Panel extends JPanel{
	
	private JScrollPane scrollPane = new JScrollPane();
	
	/**
     * Konstruktor
     */
	public BK_Panel(String titel){
		setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), titel));
		
		JLabel label[] = new JLabel[15];
		setLayout(null);
		
			
			label[0] = new JLabel("Hallo");
			label[0].setBounds(10, 10, 80, 20);
			add(label[0]);
			
			label[1] = new JLabel("Hallo");
			label[1].setBounds(10, 35, 80, 20);
			add(label[1]);
			
			label[2] = new JLabel("Hallo");
			label[2].setBounds(10, 60, 80, 20);
			add(label[2]);
		
			label[3] = new JLabel("Hallo");
			label[3].setBounds(10, 85, 80, 20);
			add(label[3]);
			
			label[4] = new JLabel("Hallo");
			label[4].setBounds(10, 85, 80, 20);
			add(label[4]);
			
			label[5] = new JLabel("Hallo");
			label[5].setBounds(10,110, 80, 20);
			add(label[5]);
			
			label[6] = new JLabel("Hallo");
			label[6].setBounds(10,135, 80, 20);
			add(label[6]);
			
			label[7] = new JLabel("Hallo");
			label[7].setBounds(10,160, 80, 20);
			add(label[7]);
			
			label[8] = new JLabel("Hallo");
			label[8].setBounds(10,185, 80, 20);
			add(label[8]);
			
			label[9] = new JLabel("Hallo");
			label[9].setBounds(10,210, 80, 20);
			add(label[9]);
			
			label[10] = new JLabel("Hallo");
			label[10].setBounds(10,235, 80, 20);
			add(label[10]);
			
			scrollPane.add(this);
			//Hier wird festgelegt das die Verticale Scrollbar nur erscheinen soll wenn Sie benötigt wird
			scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
			//Hier wird festgelegt das die Horizontale Scrollbar nie gebraucht wird
			scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			//Festlegen der Größe des scrollPanes
			scrollPane.setPreferredSize(new Dimension(320, 240));
			//Hinzufügen der JTable Komponente Ausgabetabelle in der Mitte des scrollPanes

			
	}	
}

MfG
Saban
 
Zuletzt bearbeitet von einem Moderator:
Das mach ich so:


Java:
BK_Panel pa_Kostenstelle 	= new BK_Panel("Kostenstelle");
pa_Kostenstelle.setBounds( 10,  5, 200, 150);
aktuelleGUI.add(pa_Kostenstelle);

MfG
Saban
 
Zuletzt bearbeitet von einem Moderator:
Moin,

nicht ganz das, was ich gefragt hatte :rolleyes: ... erklärt aber vermutlich Dein Problem :suspekt:

Du fügst also Deiner GUI das BK_Panel hinzu - schön!

Dieses BK_Panel kennt zwar eine interne scrollpane, nur: wo wird diese hinzugefügt? ? ?
Das fehlt das entsprechende "add" ;-]

Gruß
Klaus
 
Hi!

also ich steh grad voll auf dem Schlauch :(
Java:
scrollPane.add(this);

oder was für ein add meinst du :confused:

MfG
Saban
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

scrollPane.add(this);
damit fügst Du 'this' (als BK_Panel) der 'scrollPane' hinzu, was falsch ist!

Du musst die ScrollPane immer einem Panel zuordnen, in dem sie angezeigt werden soll! Dazu darf sie auch nicht innerhalb Deiner Klasse BK_Panel deklariert sein!
Also etwa so:
Java:
...
private JScrollPane scrollPane = new JScrollPane();
...
pa_Kostenstelle.add( scrollPane );   // EDIT
aktuelleGUI.add( pa_Kostenstelle );  // EDIT
...

Gruß
Klaus
 
Zuletzt bearbeitet:
Moin,

das was gemeint ist, schaut ganz einfach aus.
Du musst Dein ScrollPane der GUI schon hinzufügen.

Also ungefähr so:
Java:
aktuelleGUI.add(DeinScrollPane);

Nur ist das mit Deinem Code nicht wirklich möglich, da Du es etwas umständlich machst.
In Deiner Klasse wird das JPanel vollgepackt mit JLabels und danach eine ScrollPane drumherum gebastelt.
Das ist nicht verwendbar, wie Du selbst gemerkt hast.

Deshalb folgender Vorschlag:
Schmeiß das ScrollPane aus Deiner Klasse raus und hau das mit in die GUI rein:
Java:
JScrollPane scroll = new JScrollPane();
scroll.setBounds( 10,  5, 200, 150);
BK_Panel pa_Kostenstelle = new BK_Panel("Kostenstelle");
pa_Kostenstelle.setBounds( 0,  0, 200, 150);
scroll.add(pa_Kostenstelle);
aktuelleGUI.add(scroll);
Musst eigentlich nur noch die setBounds-Daten anpassen.

Gruß,
Xan

[EDIT]
Da warst wohl schneller, vfl_freak *g*
 
Zuletzt bearbeitet:
Danke für die Posts!

Also ich hab des jetzt so gemacht wie ihr des gesagt habt aber die anzeige passt immer noch nicht :confused:

Ich hab einfach mal nen Ausschnitt der Anzeige angehängt

MfG
Saban
 

Anhänge

  • Scrollpane.gif
    Scrollpane.gif
    8,4 KB · Aufrufe: 60
Zurück