Gui auslagern/verkleinern

DrZaius

Mitglied
Heyho

ich bin gerade an einem Projekt, bei dem ich eine relativ großes GUI benötige. Ich benutze das GridBagLayout, aber der Code ist noch lange nicht fertig, dennoch schon bei 400 Zeilen

Ich habe immer mal wieder was von "auslagern" gelesen, habe aber keine Beispiele gefunden, wie man einzelne Teile der GUI auslagert. Der Code besteht bisher nur aus GUI, und ich habe erst 3 Panels erstellt und trotzdem 400 Zeilen...
Könnte mir jemand das mit dem Auslagern beschreiben oder Beispielcode einfügen?
Außerdem hab ich noch von dem MVC gelesen, aber der ist mir zu kompliziert. Wenn es keine andere Lösung gibt schau ich mir den an 😀
 
Du brauchst doch nur deine Panels in eigene Klassen auslagern ....

Kann es sein das du überhaupt keine Ahnung von OOP hast? Dann solltestcdu erstmal die Grundlagen lernen bevor du ein so großes Projekt angehst...

Gruß

Claus
 
Du könntest dein GUI in Sinnabschnitte unterteilen und dann mit dem FactoryPattern die entsprechenden Panels erstellen.

Also eine Klasse
LogInGUIFactory, die eine Methode createNewLogInGUI() bietet und ein solches Panel zurückliefert.

Oder, wenn du eine Funktionalität zum Panel hinzufügst, mit Vererbung arbeiten.
 
Also ich habe bisher schon relativ viel mit Java gemacht und kenn mich eigentlich ganz gut aus mit OOP ( also bezogen auf die Grundlagen). Ich hatte nur bisher keine "großen" GUIs erstellt. Aber ich versuchs mal so, wie ich mir das jetzt vorstelle. Ich dachte nur, dass das irgendwie komplizierter wäre mit dem Auslagern beim Gui.
Danke
 
Wenn es Allgemein um Verkleinerung von Code geht sind mehrer Möglichkeiten möglich. Ich gehe meistens so vor:
  • Gibt es Code der oft wiederholt wird?
  • Ja im GridBagLAyout gibt es ihn nähmlich die GridBagConstance
Beispiel:
Java:
JLabel lbl_datei = new JLabel("Datei: ");
		GridBagConstraints gbc_lbl_datei = new GridBagConstraints();
		gbc_lbl_datei.insets = new Insets(0, 0, 5, 5);
		gbc_lbl_datei.anchor = GridBagConstraints.NORTHWEST;
		gbc_lbl_datei.gridx = 0;
		gbc_lbl_datei.gridy = 0;
		panel.add(lbl_datei, gbc_lbl_datei);
Okay bei großen Frame kommt dieser Code sehr oft also kürzen wir ihn. Wir erstellen uns eine Methode die genau das für und macht:
Java:
public GridBagConstraints createGridBagConstraints(int gridx,int gridy,int gridwidth,Insets insets,int fill){
		GridBagConstraints gbc=new GridBagConstraints();
		gbc.gridx=gridx;
		gbc.gridy=gridy;
		gbc.gridwidth=gridwidth;
		gbc.insets=insets;
		gbc.fill=fill;
		gbc.anchor=GridBagConstraints.NORTH;
		
		return gbc;
	}

Und schon kann ich meinen Ursprungs Code kürzen:
Java:
JLabel lbl_datei = new JLabel("Datei: ");
		GridBagConstraints gbc_lbl_datei = createGridBagConstraints(0, 0, 1, new Insets(0, 0, 5, 5), GridBagConstraints.NORTH);
		panel.add(lbl_datei, gbc_lbl_datei);

LG Foxei
 
Das mit der Funktion ist eine wirklich gute Idee, danke 🙂
Ich habe es bisher so gemacht, dass ich die Constraints einmal definiere und dann immer überschreibe
Ich hab das jetzt mit dem Auslagern von Panels angefangen und versuche es mal so. Das mit den Funktionen kann ich gut in den einzelnen Panels benutzen. 🙂
 

Zurück
Oben