Swing Bordered Pane und Jpanel

y0dA

Top Contributor
1) Ist es möglich in einem JFrame mehrere JPanel zu haben (also untereinander)? Habe es versucht und bisher wird bei mir immer nur das zuletzt hinzugefügte Panel angezeigt.

2) Falls ein JFrame nicht mehrere Jpanels haben kann habe ich folgendes Problem: Ich habe eine Eingabeseite welche unterteilt werden sollte unter ThemaA, ThemaB und ThemaC und über jedes Thema wollter ich ein Bordered Pane legen mit einer Überschrift - wie kann ich selbiges realisieren?
 

tuttle64

Bekanntes Mitglied
1) Ist es möglich in einem JFrame mehrere JPanel zu haben (also untereinander)? Habe es versucht und bisher wird bei mir immer nur das zuletzt hinzugefügte Panel angezeigt.


das geht. lese diese seite und dann wirst du auch sehen, wie das geht.

zu deinem problem: sofern dein JFrame ein BorderLayout gesetzt hat, wird das JPanel den ganzen Platz einnehmen, da keine anderen Komponenten zu berücksichtigen sind. Bei einem BorderLayout werden darum die Komponenten auch mit den Konstanten SOUTH, NORTH usw. gesetzt, damit sie sich nicht gegenseitig überschreiben/überlagern. Wenn Du Deinen java code postest, könnte ich auch konkreter helfen.
 
Zuletzt bearbeitet:

y0dA

Top Contributor
Hier mal mein Code:

Java:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class MainGui extends JFrame {

	private static final long serialVersionUID = -3656238747406546991L;

	JPanel panelDecision;

	JPanel panelNewConfiguration;

	JPanel test;

	public MainGui() {
		this.setTitle(GuiConstants.LABEL_WINDOW_NAME);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

		showPanel(initializeDecision());
	}

	private JPanel initializeDecision() {
		this.setSize(550, 300);
		panelDecision = new JPanel(new GridBagLayout());
		panelDecision
				.setBorder(BorderFactory.createEmptyBorder(30, 30, 30, 30));
		GridBagConstraints gbc = new GridBagConstraints();

		JLabel labelDecision = new JLabel(GuiConstants.LABEL_DECISION);

		JButton buttonNewConfiguration = new JButton("new");
		buttonNewConfiguration.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// changeVisiblePanel(initializeNewConfiguration(),
				// panelDecision);
				List<JPanel> newPanelList = new ArrayList<JPanel>();
				newPanelList.add(initializeNewConfiguration());
				newPanelList.add(initializeNHashMethods());
				changeVisiblePanel(newPanelList, panelDecision);
			}
		});

		JButton buttonExistingConfiguration = new JButton("existing");

		gbc.gridwidth = 0;
		gbc.weightx = 1.0;
		gbc.fill = GridBagConstraints.HORIZONTAL;
		panelDecision.add(labelDecision, gbc);

		gbc.gridy = 1;
		gbc.gridwidth = 1;
		gbc.anchor = GridBagConstraints.EAST;
		gbc.fill = GridBagConstraints.NONE;
		panelDecision.add(buttonNewConfiguration, gbc);

		gbc.gridx = 1;
		gbc.anchor = GridBagConstraints.WEST;
		panelDecision.add(buttonExistingConfiguration, gbc);

		return panelDecision;
	}

	private JPanel initializeNewConfiguration() {
		setSize(550, 500);
		panelNewConfiguration = new JPanel(new GridBagLayout());
		panelNewConfiguration.setBorder(BorderFactory.createEmptyBorder(30, 30,
				30, 30));
		initializeDirectory();

		return panelNewConfiguration;
	}

	private void initializeDirectory() {
		GridBagConstraints gbc = new GridBagConstraints();

		JLabel labelDirectory = new JLabel("panel 1");

		gbc.gridwidth = 0;
		gbc.weightx = 1.0;
		gbc.fill = GridBagConstraints.HORIZONTAL;

		panelNewConfiguration.add(labelDirectory, gbc);
	}

	private JPanel initializeNHashMethods() {
		test = new JPanel(new GridBagLayout());
		GridBagConstraints gbc = new GridBagConstraints();

		JLabel labelHashMethods = new JLabel("Panel 2");
		gbc.anchor = GridBagConstraints.WEST;
		gbc.gridy = 5;
		gbc.fill = GridBagConstraints.VERTICAL;
		test.add(labelHashMethods, gbc);

		return test;
	}

	private void changeVisiblePanel(List<JPanel> newPanelList, JPanel oldPanel) {
		remove(oldPanel);
		for (JPanel newPanel : newPanelList) {
			showPanel(newPanel);
		}
	}

	private void changeVisiblePanel(JPanel newPanel, JPanel oldPanel) {
		remove(oldPanel);
		showPanel(newPanel);
	}

	private void showPanel(JPanel panel) {
		add(panel);
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				new MainGui().setVisible(true);
			}
		});
	}
}

Wie man sieht benutze ich das Gridbaylayout (mehr schlecht als recht).
Im Detail sollte die Erfassungseite wie folgt aussehen (untereinander):

Überschrift1(bestenfalls über folgende Felder dann der Rahmen) - Panel 1
label - text - button
label - combobox
label - text - button
Ende von Überschrift 1

Überschrift2(bestenfalls über folgende Felder dann der Rahmen) - Panel 2
- combobox
Ende von Überschrift 2

Überschrift3(bestenfalls über folgende Felder dann der Rahmen) - Panel 3
- combobox
label - text - button
label - text
Ende von Überschrift 3
 
Zuletzt bearbeitet:

henpara

Bekanntes Mitglied
einfach deinem hauptframe das NULL-Layout zuweisen, dann kannst du via (pos x, pos y, width, higth) (alles int) deine panels positionieren.

Find ich am "einfachsten" für komplexere Gui´s, da man sich nirgendwo von vorne herein festlegen muss.
 
S

SlaterB

Gast
@y0dA
was zu verbessern ist wurde doch quasi schon gesagt, JFrame hat BorderLayout, BorderLayout kann nur eine Komponente, gibt auch andere Layouts (nicht unbedingt null..)

mit 600 Postings solltest du doch wissen was zu korrigieren ist bzw. wenn du noch überhaupt nichts zu GUIs + Layouts weißt,
dann die Muße haben, paar Stunden im gegebenen Link zu lesen, erst Beispiele aus dem Internet anzuschauen usw.
 

y0dA

Top Contributor
@y0dA
mit 600 Postings solltest du doch wissen was zu korrigieren ist bzw. wenn du noch überhaupt nichts zu GUIs + Layouts weißt,
dann die Muße haben, paar Stunden im gegebenen Link zu lesen, erst Beispiele aus dem Internet anzuschauen usw.
Über Swing weiß ich eigentlich gar nichts (ausser was ich am Wochenende produziert habe). Ich habe nicht die Zeit stunden/tagelang mich nun in Swing einzuarbeiten, ich brauche Ergebnisse ansonsten würde ich die teils "dummen" Fragen nicht stellen.
 
S

SlaterB

Gast
dann fange eben mit
Java:
    public MainGui()  {
        setLayout(new FlowLayout());
        this.setTitle("xy");

+

    private void showPanel(JPanel panel)  {
        add(panel);
        validate();
        repaint();
    }
an, aber ohne Kenntnisse gibt es überall Falltüren..
 

y0dA

Top Contributor
Ja nur brauche ich einfach nur eine einfach Eingabemaske und das kann ja nicht so schwer sein dass man obig gewünschtes Format hinbekommt ohne stundenlang die Layoutmanager studieren zu müssen :(
 

tuttle64

Bekanntes Mitglied
@y0dA
was zu verbessern ist wurde doch quasi schon gesagt, JFrame hat BorderLayout, BorderLayout kann nur eine Komponente, gibt auch andere Layouts (nicht unbedingt null..)


sorry wenn ich dich verbessern muss, aber

A BorderLayout places components in up to five areas: top, bottom, left, right, and center.

und da komponenten verschachtelt werden können, kann man pro area nochmals ein beliebiges Layout plazieren.
 

henpara

Bekanntes Mitglied
1) Ist es möglich in einem JFrame mehrere JPanel zu haben (also untereinander)? Habe es versucht und bisher wird bei mir immer nur das zuletzt hinzugefügte Panel angezeigt.

2) Falls ein JFrame nicht mehrere Jpanels haben kann habe ich folgendes Problem: Ich habe eine Eingabeseite welche unterteilt werden sollte unter ThemaA, ThemaB und ThemaC und über jedes Thema wollter ich ein Bordered Pane legen mit einer Überschrift - wie kann ich selbiges realisieren?

1. Es ist möglich, aber je nach Layoutmanager können sich die Panels überlagern und es werden nicht alle angezeigt ----

Null layout: du gibst Position und Größe vor, wenn man sich net dumm anstellt (2 mal gleiche pos und einmal kleiner gleiche Größe) wird dir da niemals was verschwinden.

2. Wie schon gesagt gibst du dem Frame das Nulllayout, setzt deine 3 Panels dahin, wo du sie gerne haben möchtest.
Dann gibst du deinen Panels ein Border layout. Nach Norde schießt du ein JLabel mit Überschrift und ins Center den rest.
Alternativ kannst du auch jedes Panel mit dem NullLayout bepacken, da bleibt eben die volle Kontrolle bei dir.

Nulllayout ist auch in so fern superschön einfach, weil man eben immer NUR position und größe angibt! mit setBounds(int1,...,int4). Bischen an den Zahlen spielen und du hast alles so, wie du willst.

Einziger Haken wäre jetzt, wenn du relativ sachen genau in der Mitte haben möchtest. Dann musst halt bischen Mit den Zahlen rechnen, aber ich trau dir jetzt einfach mal zu das arithmetische Mittel berechnen zu können ;)

Mfg
 

vladimir

Aktives Mitglied
Dann nimm eine IDE wie Netbeans und klikere dir das ganze zusammen, hast in 3 minuten fertig!
Layoutmanager must Du dennoch setzen. :) mach Dir doch die Mühe es lohnt sich!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Die ganze Pane width nutzen AWT, Swing, JavaFX & SWT 1
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
D JavaFX Pane per Drag&Drop bewegen? AWT, Swing, JavaFX & SWT 2
L JavaFX Pane inklusive Inhalt der Bildschirm Auflösung anpassen AWT, Swing, JavaFX & SWT 13
Z JavaFX Pane für wechselnde Sub-Panes mit Auto-Resize AWT, Swing, JavaFX & SWT 2
MiMa GUI Controller für Border Pane als MVC Modell AWT, Swing, JavaFX & SWT 1
J Swing Pane im SplitPane automatische Größe aktivieren AWT, Swing, JavaFX & SWT 0
K TabPane Pane Styling mit CSS AWT, Swing, JavaFX & SWT 3
M PDF einlesen und innerhalb Pane anzeigen AWT, Swing, JavaFX & SWT 5
WetWer Scroll Pane AWT, Swing, JavaFX & SWT 2
K JavaFX NullpointerEx, kann nichts zur Pane hinzufügen AWT, Swing, JavaFX & SWT 10
S JavaFX Pane Wechsel AWT, Swing, JavaFX & SWT 1
HaukeG JavaFX JavaFX Resize und DragAndDrop eines Pane AWT, Swing, JavaFX & SWT 4
M Java FX Welches Accordion Tilded Pane geöffnet? AWT, Swing, JavaFX & SWT 4
V JavaFX, Pane construktor von einer Klasse in der Main verwenden. AWT, Swing, JavaFX & SWT 4
G JavaFX Pane ändern/"austauschen" AWT, Swing, JavaFX & SWT 2
Kenan89 Vertikal und horizontal zentrierter Pane in ScrollPane AWT, Swing, JavaFX & SWT 5
M Auf Glass Pane zeichnen AWT, Swing, JavaFX & SWT 3
L JFrame/Content Pane height Problem AWT, Swing, JavaFX & SWT 4
G inahlt von content pane austauschen AWT, Swing, JavaFX & SWT 2
A Probleme mit JOption Pane mit FokusListener und Schaltfläche AWT, Swing, JavaFX & SWT 5
T Tabbed Pane AWT, Swing, JavaFX & SWT 3
F An eindeutigen Index eines Tabs in einer JTabbed Pane kommen AWT, Swing, JavaFX & SWT 3
A Tabbed Pane ohne Tabs? - möglich? AWT, Swing, JavaFX & SWT 4
G eigenes option pane AWT, Swing, JavaFX & SWT 5
F Maximieren, Minimieren, Schließen Button in JTabbed Pane AWT, Swing, JavaFX & SWT 2
K Mouse Events der Scrollbar/pane AWT, Swing, JavaFX & SWT 2
A Datei einlesen und Inhalt in JList (Tabbed Pane) anzeigen? AWT, Swing, JavaFX & SWT 11
P Scrollbar/Pane auch mit negativen x,y - Werten AWT, Swing, JavaFX & SWT 2
P Zwei JPanel übereianderlegen AWT, Swing, JavaFX & SWT 14
XWing Basic JPanel mit 2 Buttons beutzen. AWT, Swing, JavaFX & SWT 10
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
M clear JPanel before repainting AWT, Swing, JavaFX & SWT 1
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
T Swing Reload JPanel + darin liegende ProgressBar AWT, Swing, JavaFX & SWT 9
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
P Button simpler random auf einem JPanel verteilen? AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
Ich lerne Java. Swing Von JPanel A auf JPanel B zugreifen. AWT, Swing, JavaFX & SWT 4
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
E Auf JPanel malen und davor JComponenten anzeigen AWT, Swing, JavaFX & SWT 12
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
B Verschiebbares JPanel "ruckelt" im Randbereich AWT, Swing, JavaFX & SWT 2
S Swing JPanel nimmt keinen KeyListener an AWT, Swing, JavaFX & SWT 7
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
Hatsi09 Swing JPanel Bild einfügen AWT, Swing, JavaFX & SWT 14
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
E Hintergrundfarbe setzen in JPanel funktioneirt nicht AWT, Swing, JavaFX & SWT 4
P JPanel KeyListener hinzufügen AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
D Platzierung von JTextfield in JPanel AWT, Swing, JavaFX & SWT 3
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Zwei JPanel übereinander nur vorderes "repainten" AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
M Swing JPanel flüssig verschieben AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
kilopack15 JPanel im laufenden Zustand einfärben AWT, Swing, JavaFX & SWT 2
kilopack15 JPanel Farbverwaltung AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JPanel zeichnet im Konstrukter erzeugten Hintergrund nicht AWT, Swing, JavaFX & SWT 10
Java_RY wie kann ich auf JButtons in einem JPanel zugreifen AWT, Swing, JavaFX & SWT 3
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Meeresgott Swing Umgang mit JPanel AWT, Swing, JavaFX & SWT 4
R 2D-Grafik PNG Bild per Graphics auf JPanel AWT, Swing, JavaFX & SWT 9
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
W Swing JPanel nur einmal nach mehreren Änderungen neu zeichnen AWT, Swing, JavaFX & SWT 1
J Swing Zeichenfläche im JPanel des Haupfenster anzeigen lassen AWT, Swing, JavaFX & SWT 4
A Swing JPanel zeigt Buttons nicht an AWT, Swing, JavaFX & SWT 4
R JPanel überzeichnet alles? AWT, Swing, JavaFX & SWT 1
D Von JPanel auf anderes JPanel zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
I JPanel - Verwaltung/ Anordnung AWT, Swing, JavaFX & SWT 4
T JComponents zur Laufzeit auf JPanel darstellen AWT, Swing, JavaFX & SWT 10
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
J Linien auf JPanel zeichnen AWT, Swing, JavaFX & SWT 3
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben