Zum Inhalt springen

Ein JPanel mit Border, Scrollpane und Checkboxen


Empfohlene Beiträge

Geschrieben

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:


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

Geschrieben

Ich muss aus ner Datenbank auslesen welche Strings es als Checkboxen geben soll und anschließend diese als Checkboxen initialiseren. Checkboxen erstellen ist kein Problem an sich. Ich würde nur gern wissen wie man ein Panel mit nem Scrollpane anlegt. Und wenn ich wüsste wie des geht dann würde ich den Post ja net brauchen und so weit bin ich bis jetzt noch nicht gekommen...


Scrollpane scrollpane = new Scrollpane(this);

wäre mein Ansatz gewesen

MfG

Saban

Geschrieben

Hi!

Danke aber das weiß ich schon. Das einzige problem ist das mir kein scrollpane angezeigt wird. Ich lasse 14 JLabels auf das Panel legen. Und füge dann alles zusammen so wie du es gesagt hast. Das Problem ist mir werden nur 10 von 14 labels angezeigt und es erscheint keine Scrollpane :confused:

MfG

Saban

Geschrieben

Ihr beiden redet ja auch super aneinander vorbei...

Also, die Sache ist ganz einfach. Zu allererst solltest anstatt ScrollPane lieber die Klasse JScrollPane benutzen, da diese genauso wie JPanel aus dem swing Packet stammt.

Und dann erzeugst du dir einfach ein JScrollPane und übergibst im Konstruktor dein JPanel, auf dem deine ganzen Checkboxen liegen, diesem JScrollPane. Danach musste das JScrollPane deinem JFrame oder sonst was einfach nur noch hinzufügen (nicht das JPanel!) und schon bekommste bei zu vielen Komponenten auf dem JPanel einen Scrollbalken.

Geschrieben

Hallo!

Also ich habs jetzt mal so ausprobiert aber da wird kein Scrollpane angezeigt... :confused:


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);

			scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

			scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

			scrollPane.setPreferredSize(new Dimension(320, 240));


	}	

}

MfG

Saban

Geschrieben

Das mach ich so:


BK_Panel pa_Kostenstelle 	= new BK_Panel("Kostenstelle");

pa_Kostenstelle.setBounds( 10,  5, 200, 150);

aktuelleGUI.add(pa_Kostenstelle);

MfG

Saban

Geschrieben

hier fügst du aber das JPanel zum JFrame hinzu, wenn ich das richtig verstanden habe, solltest du aber die JScrollPane zum JFrame hinzufügen.

Und dann erzeugst du dir einfach ein JScrollPane und übergibst im Konstruktor dein JPanel, auf dem deine ganzen Checkboxen liegen, diesem JScrollPane. Danach musste das JScrollPane deinem JFrame oder sonst was einfach nur noch hinzufügen (nicht das JPanel!) und schon bekommste bei zu vielen Komponenten auf dem JPanel einen Scrollbalken.

deswegen funktioniert es wahrscheinlich auch nicht;)

Geschrieben
hier fügst du aber das JPanel zum JFrame hinzu, wenn ich das richtig verstanden habe, solltest du aber die JScrollPane zum JFrame hinzufügen.

[Mein Zitat]

deswegen funktioniert es wahrscheinlich auch nicht;)

Danke, wenigstens einer der es gelesen hat ;)

Geschrieben

hatte gerade langeweile und da ich mich mit swing eigentlich nicht auskenne hab ich es mal versucht ;-)

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;



public class ScrollPaneTest {



	private JFrame f;

	private JScrollPane scroll; 

	private JPanel panel;

	private JLabel lbl0;

	private JLabel lbl1;

	private JLabel lbl2;

	private JLabel lbl3;

	private JLabel lbl4;

	private JLabel lbl5;

	private JLabel lbl6;

	private JLabel lbl7;

	private JLabel lbl8;

	private JLabel lbl9;



	public ScrollPaneTest()

	{

		f = new JFrame();

		panel = new JPanel();

		lbl0 = new JLabel("hallo0");

		lbl1 = new JLabel("hallo1");

		lbl2 = new JLabel("hallo2");

		lbl3 = new JLabel("hallo3");

		lbl4 = new JLabel("hallo4");

		lbl5 = new JLabel("hallo5");

		lbl6 = new JLabel("hallo6");

		lbl7 = new JLabel("hallo7");

		lbl8 = new JLabel("hallo8");

		lbl9 = new JLabel("hallo9");

		panel.add(lbl0);

		panel.add(lbl1);

		panel.add(lbl2);

		panel.add(lbl3);

		panel.add(lbl4);

		panel.add(lbl5);

		panel.add(lbl6);

		panel.add(lbl7);

		panel.add(lbl8);

		panel.add(lbl9);

		scroll = new JScrollPane(panel);

		f.add(scroll);

		f.setVisible(true);

		f.setSize(100,100);

		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

	public static void main(String[] args) {

		ScrollPaneTest test = new ScrollPaneTest();


	}


}

funktioniert einwandfrei =)

Geschrieben

Achso :upps

Ähm eine Frage hätte ich dann noch meine klasse beinhaltet ja ein JPanel und im Konstruktor füge ich dieses Panel einem ScrollPane hinzu. Nur wie übergebe ich das ScrollPane später dem Frame.

Wenn ich ein Objekt erzeuge bleibt es ja ein Panel oder :confused:

Ich komm da nicht ganz mit...

MfG

Saban

Geschrieben

Zum Beispiel in dem du in deiner Klasse einfach nur das JPanel erzeugst und das JScrollPane einfach erstmal weg lässt. Das JPanel muss dem JScrollPane nicht von anfang an hinzugefügt worden sein, das geht auch am Ende.

Und dann schreibste dir in deiner eigenen JPanel-Klasse einfach eine Methode die eine JScrollPane, die dein JPanel beinhaltet, zurück gibt.

Beispiel:


public class BK_Panel extends JPanel{

	[...]

	public JScrollPane getPanelWithScrollPane() {

		return new JScrollPane(this);

	}

	[...]

}

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...