Grundlegende Idee für GUI

selmaohneh

Mitglied
Moin!

Ich habe bisher einige GUIs geschrieben, bei denen ich neue Fenster mittels Klasse frame = new Klasse(); frame.setVisible(); geöffnet habe. Mit einem dispose(); konnte ich auch den alten JFrame einfach beenden. Dies lief soweit immer gut...

Nun möchte ich eine GUI schreiben, in der sich alles in einer JFrame abspielt. Ich möchte ein Menü bauen und je nachdem, was gewählt wird, ändern sich die Elemente im Panel. Wie realisiere ich dies am besten? Baue ich mir ganz viele übereinanderliegende Panel und blende diese dann nur ein/aus? Oder gibt es da eine elegantere Lösung?

Danke im Voraus!
 
Ich machs immer so, dass ich ein ContentPanel bastel,
dass je nach Zustand und Ort der GUI verändert wird.

Dh. die verschiedenen Menüzustände als eigene Klasse und alle von
JPanel erben lassen.

Dann kannst im Frame die immer austauschen mit add() und remove()
oder je nachdem setContentPanel().

Also nicht ganz viel übereinander und Sichtbarkeit ändern, sondern einfach
zur Laufzeit den Inhalt wechseln des Fensters.
 
Ich hatte vor kurzem das gleiche Problem, angefangen habe ich damit das ich mir eine Utilityklasse (FrameFactory) erstellt habe , der ich zum Erzeugen eines JFrames im Konstruktor gleich schon die wichtigsten Parameter übergeben kann, und mir dann einfach über eine Statische Hilfsmethode ein Frame erzeugen lasse.

Java:
import javax.swing.JFrame;

/**
 * 
 * @author kaoZ
 *
 */

public class FrameFactory {

	public FrameFactory() {}
	
	/**
	 * 
	 * Creates a new JFrame with following parameters
	 * 
	 * @param title The title of the Frame
	 * @param width Sets the width of the Frame
	 * @param height Sets the height of the Frame
	 * @param operation Sets the defaultCloseOperation
	 * @param extendedState Sets the State of the Frame
	 * @param component The component the Frame is relative to 
	 * @return The Constructed JFrame with parameters
	 */
	
	public static JFrame createFrame(String title, int width, int height, int operation, int extendedState, JFrame component){
		JFrame frame = new JFrame();
		
		frame.setTitle(title);
		frame.setSize(width, height);
		frame.setDefaultCloseOperation(operation);
		frame.setLocationRelativeTo(component);
		frame.setExtendedState(extendedState);
		
		return frame;
	}

}

Dies könntest du dann folgendermaßen verwenden :

Java:
frame = FrameFactory.createFrame(APP_TITLE, SCREEN_WIDTH, SCREEN_HEIGHT, 2, JFrame.MAXIMIZED_BOTH,  null);

Die Grundidee war das ich so an beliebiger stelle ohne viel aufwand ein Frame erzeugen kann welches ist über die Parameter schon steuern kann, wie etwa durch die angabe von
Code:
.setLocationRelativeTo();
, so könnte ich damit z.B auch einen unabhängig gestalteten Dialog oder ähnliches erzeugen, und die position direkt festlegen.

diesem Setze ich dann wie mein Vorposter schon geschrieben hat zentral ein JPanel als contentPane (mit spezifischem Layout) , und diesem füge ich dann, in Separaten Klassen definierte Container (JPanel) hinzu, ToolBar, MenuBar Statusbar usw.... wie eine Art Baukasten System um den Source Code nicht unnötig aufzublähen.

aber das ist auch nur ein Ansatz 🙂
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben