zwei gleich große Panels getrennt durch ein weiteres Panel

HKirchberg

Mitglied
Hallo zusammen,

ich will in der Breite zwei gleich große Panels, welche sich beim verändern der größe auch gleich Anpassen realisieren. Diese Panels sollen aber durch ein weiteres Panel, welche die breite nicht verändern soll, getrennt werden. Wie kann ich so was realiseren?

Gruß
 
Verwende einfach das passende Layout und gib dem mittleren Panel eine fixe Größe.

Was hast du denn bisher schon probiert? Woran scheitert es?
 
Ich habe verschiedene Layouts probiert und dachte Border Layout wäre ideal, aber hier muss ich ja die Größe der Panels manuell entsprechend nach ändern der Fenstergröße anpassen.
 
Der LayoutManager kümmert sich darum das die einzelnen Komponenten entsprechend vergrößert/verkleinert werden.
Richtig eingesetzt bzw. kombiniert sollte ein manuelles setzen der Größe nur in ganz seltenen Notfällen notwendig sein (wenn überhaupt).
 
FlowLayout mal nicht, sollte ein Element keinen Platz haben wird ein Zeilenumbruch erzwungen.

Wie wäre es mal mit dem GridLayout? Dort einfach 3 Zeilen (oder Spalten) definieren und mit entsprechenden Panels belegen.
 
GridLayout verteil leider den Platz gleichmäßig. Mir fällt im Moment auch nichts anderes ein. Vielleicht GridBagLayout. Ist dann aber auf jeden Fall komplizierter.
 
Vielleicht so? Hab schon länger nichts mehr mit dem GridBagLayout gemacht. Bitte Nachsicht 🙂

Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;


public class TestGui
{
	public TestGui()
	{
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(new GridBagLayout());
		
		GridBagConstraints gbc;
		JPanel panel;
		
		gbc = new GridBagConstraints();
		gbc.gridx = 0;
		gbc.gridy = 0;
		gbc.fill = GridBagConstraints.BOTH;
		gbc.weightx = 0.1;
		gbc.weighty = 0.1;
		panel = new JPanel();
		panel.setBackground(Color.GREEN);
		frame.add(panel, gbc);
		
		
		gbc = new GridBagConstraints();
		gbc.gridx = 1;
		gbc.gridy = 0;
		gbc.fill = GridBagConstraints.VERTICAL;
		panel = new JPanel();
		panel.setPreferredSize(new Dimension(30, 200));
		panel.setMinimumSize(new Dimension(30, 200));
		panel.setMaximumSize(new Dimension(30, 200));
		panel.setBackground(Color.BLUE);
		frame.add(panel, gbc);
		
		gbc = new GridBagConstraints();
		gbc.gridx = 2;
		gbc.gridy = 0;
		gbc.fill = GridBagConstraints.BOTH;
		gbc.weightx = 0.1;
		gbc.weighty = 0.1;
		panel = new JPanel();
		panel.setBackground(Color.CYAN);
		frame.add(panel, gbc);
		
		
		frame.pack();
		frame.setSize(200, 200);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
	
	
	
	
	public static void main(String[] args)
	{
		SwingUtilities.invokeLater(new Runnable() {
			
			@Override
			public void run()
			{
				new TestGui();
			}
		});
	}
}
 

Zurück
Oben