LayoutManager Welcher LayoutManager für dieses zweispaltige Layout?

  • Themenstarter Themenstarter seiromem
  • Beginndatum Beginndatum
S

seiromem

Gast
Hallo,

ich beschäftige mich erst seit kurzen mit Swing, daher verzeiht bitte, wenn die Frage sehr basal ist, aber mir fehlt es einfach noch an Überblick.
Und zwar würde ich mich freuen, wenn ihr mir einen Tipp geben könntet, mit welchem LayoutManger ich folgendes am besten umsetzen kann:
Ich habe ein JFrame, dessen Größe der Benutzer verändern kann. Innerhalb dessen soll es zwei Bereiche Geben: links ein Bereich in dem JSlider mit je einem JLabel in einer Matrix angeordnet sind (also mehrere Zeilen und Spalten von solchen Paaren) und rechts ein Bereich, in den ich einen Graph zeichnen möchte. Der linke Teil mit den Slidern soll eine fixe (vorgebbare) Größe haben und der rechte (der Graph) soll den gesamten darüber hinaus zur Verfügung stehenden Raum einnehmen (er soll also mit der Fenstergröße skalieren).


Vielen Dank für euere Hilfe!
 
Ok, recht vielen Dank euch beiden!
Eine Frage habe ich dann aber zu dem Control-Panel noch: Ordne ich die Matrix der Slider mit je einem Label am besten mit GroupLayout an?
 
Das Problem dabei ist, dass Label und Slider immer gleich breit sind, was meistens nicht sinnvoll ist. Das Label muss nicht breiter sein, als es ist, aber ein Slider kann "beliebig" breit sein. Da KÖNNTE man das (ansonsten IMHO ziemlich :autsch: e GridBagLayout verwenden, oder ein "besseres" - GroupLayout hab' ich noch nicht wirklich verwendet...)
 
Naja nur mit dem GridLayout wird´s nicht schick, da geb ich dir recht😉

Wenn es aber immer diese Kombi(Label und Slider) ist, dann kann man sich ja ne Klasse schreiben, die von JPanel erbt und Label, Slider sowie Getter, Setter und Listener hält.

Die dann einfach per GridLayout verteilen und gut is, ...so würde ich das zumindest angehen, macht IMHO weniger Arbeit und Wusel als mit dem ollen GridBagLayout rum zu fummeln.

Gruß Vanny <<< bekennender GridBagLayoutHasser
 
Zuletzt bearbeitet von einem Moderator:
Eigentlich ja, aber dann ist nicht sichergestellt, dass alle Labels und alle Slider bündig untereinander angeordnet sind. Das ist für mich zumindest der einzige Fall, wo ich auch ein GridBagLayout verwenden würde, das ist dann auch noch überschaubar und strukturiert. Ansonsten gilt natürlich immernoch Totally Gridbag – madbean 😀
 
@link von Marco :toll:

Der Frame:
Java:
public class TestFrame extends JFrame{
	
	public TestFrame(){
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		JPanel pan = new JPanel(new GridLayout(5, 2));
		for(int i=1;i<=10;i++){
			pan.add(new KomponentenPaket("Komponente Nr."+i));
		}
		
		this.getContentPane().add(BorderLayout.WEST, pan);
		this.pack();
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}
	
	public static void main(String[] args) {
		new TestFrame();
	}

}

siehe Klassenname
Java:
public class KomponentenPaket extends JPanel{
	
	private JLabel lbl;
	private JSlider slider;
	
	public KomponentenPaket(String lblBezeichnung){
		this.setLayout(new BorderLayout(5, 5));
		this.setBorder(BorderFactory.createEtchedBorder());
		lbl = new JLabel(lblBezeichnung);
                    lbl.setBorder(BorderFactory.createEmptyBorder(5, 6, 5, 6));
		slider = new JSlider();
		this.add(BorderLayout.CENTER, lbl);
		this.add(BorderLayout.SOUTH, slider);
	}

	public void setLbl(JLabel lbl) {
		this.lbl = lbl;
	}

	public JLabel getLbl() {
		return lbl;
	}

	public void setSlider(JSlider slider) {
		this.slider = slider;
	}

	public JSlider getSlider() {
		return slider;
	}

}

Ist doch in Order oder? Mir ist halt nicht klar, wo da das GridBag helfen könnte...klär mich mal auf 😛

Gruß Vanny
 

Anhänge

  • gridlayout.jpg
    gridlayout.jpg
    82,7 KB · Aufrufe: 34
Zuletzt bearbeitet von einem Moderator:
Ich ging von sowas aus wie
Code:
SomeLabel              |  Slider 
SomeLabelWithMoreText  |  Slider 
Short                  |  Slider 
SomeOtherLabel         |  Slider
Sowas kriegt man mit den "einfachen" Layoutmanagern (Border, Grid, Box, Flow) nicht vernünftig hin....
 
Ich ging von sowas aus wie
Code:
SomeLabel              |  Slider 
SomeLabelWithMoreText  |  Slider 
Short                  |  Slider 
SomeOtherLabel         |  Slider
Sowas kriegt man mit den "einfachen" Layoutmanagern (Border, Grid, Box, Flow) nicht vernünftig hin....

Aber genau dafür ist Forms Layout perfekt!
 
Jep,

hab´s ausgetestet und geht wirklich nicht mit den Standards:autsch:

Ich hatte schon den Verdacht, dass wir verschiedene Vorstellungen hatten, darum hab ich fix das Beispiel gepostet😉.

Das mit dem FormsLayout, werd ich mir mal anschaun, das kannte ich noch nicht.
Naja warten wir mal ab, was der TO dazu meint.

So looooong
Vanny
 

Zurück
Oben