Swing Grundlegende Frage zu SWING mit WindowBuilder

martin1989

Aktives Mitglied
Hallo!

Ich bin nun beim Erstellen meiner GUI mit SWING und habe mir auch schon einige Tutorials angeschaut.
Eine Frage bevor ich starte hätte ich noch und zwar wie realisiert man folgendes am besten mit dem Windows Builder:

Ich will ein Hauptfenster haben mit einer Menüleiste. Je nach ausgewählter Funktion soll der Inhalt der darunter dargestellt wird verschieden sein. Einmal will ich eine Tabelle darstellen und einmal nur eine Liste und einmal nur ein paar Buttons.

Muss ich hier nun für alle drei verschiedenen Darstellungsmöglichkeiten ein neues WindowsBuilder Projekt erstellen? Sonst zeichne ich ja quasi immer drüber oder wie läuft das mit dem WindowsBuilder? Ich beziehe mich hier auf die grafische Darstellung des WindowBuilder wo man ja seine GUI einfach zusammenklicken kann so wie man sie will. Ich habe mir eben ein JFrame erstellt, dann ein JPanel darübergelegt, ganz oben das Menü und in der mitte ein JTable. Wie erzeuge ich nun die anderen Darstellungsmöglichkeiten? Mit einem extra fenster das ich dann einfach aufrufe oder wie macht man das?

Vielen Dank und noch einen schönen Sonntag :)
 

Gucky

Top Contributor
Es gibt zwei Arten, wie ich dich verstehen kann und ich werde dir für beide Lösungen präsentieren:

1. Wenn du dir jetzt schon hundertprozentig sicher bist, dass du das Menü nicht ändern wirst, dann kannst du alles in eine Klasse tun. Wenn du es ändern möchtest, wäre Verteilen besser.

2. Guck dir mal das CardLayout an.


PS: Das Ding heißt WindowBuilder. Ohne "s" ;)
 

martin1989

Aktives Mitglied
danke!

das mit dem card layout sieht schon ganz gut aus denke ich :)

Wenn ich das richtig verstanden habe, kann ich also eine "card" für jeweils einen fensterinhalt verwenden?
 
Zuletzt bearbeitet:

martin1989

Aktives Mitglied
hehe perfekt danke!

Ich hab mir jetzt ne kleine gui gebaut, wo ich oben eine menüleiste habe und darunter ein panel wo zwei panels drinnen liegen. Jeweils mit einem button wo ich umschalten kann zwischen den zwei fenster:

Java:
JFrame frame = new JFrame("TestFenster");
	JPanel panelCont = new JPanel();
	JPanel panelOne = new JPanel();
	JPanel panelSecond = new JPanel();
	JButton buttonOne = new JButton("S");
	JButton buttonTwo = new JButton("S");
	CardLayout cl = new CardLayout();
	BorderLayout bl = new BorderLayout();
	private final JMenuBar menuBar = new JMenuBar();
	private final JMenu mnNewMenu = new JMenu("Start");
	private final JMenuItem mntmNewMenuItem = new JMenuItem("Öffnen...");
	
	public GUI()
	{
		
		
		panelCont.setLayout(cl); //
		
		panelOne.add(buttonOne);
		panelSecond.add(buttonTwo);
		panelOne.setBackground(Color.BLUE);
		panelSecond.setBackground(Color.GREEN);
		
		panelCont.add(panelOne, "1");
		panelCont.add(panelSecond, "2");
		cl.show(panelCont, "1");
		
		buttonOne.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0){
				cl.show(panelCont, "2");
			}
		});
			
		
		buttonTwo.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0){
				cl.show(panelCont, "1");
			  }
		});
		
		
		frame.getContentPane().add(panelCont, BorderLayout.CENTER);
		frame.setMinimumSize(new Dimension(800, 800));
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	
		frame.setVisible(true);
		frame.pack();
		frame.setSize(530,239);
		
		frame.setJMenuBar(menuBar);
		
		menuBar.add(mnNewMenu);
		mnNewMenu.add(mntmNewMenuItem);
		
	
	}
	
	
	public static void main(String[] args){
		SwingUtilities.invokeLater(new Runnable(){
	//
		public void run(){
			
			new GUI();
		}	});
	}
	
	}


bezüglich Struktur hätte ich noch eine Frage und zwar, soll ich jetzt alles in dieser Klasse GUI programmieren und kann ich das in andere Klassen auslagern? Ich würde jetzt gerne für die "unter panels" jeweils eine eigene oberfläche machen, also auf einer eine JTable anzeigen und auf der anderen was anders.

Übersichtshalber würde ich es schon besser finden wenn das in extrigen klassen gemacht wird aber ich weiss nicht wie man das so macht. und wie der window builder dann darauf reagiert?

Des weiteren wundert mich warum man dieses getContentPane braucht? Ist das so quasi die hauptpane die man nicht wegmachen kann?

Vielen Dank!
 
Zuletzt bearbeitet von einem Moderator:

franky27

Bekanntes Mitglied
Das kannst du in externen Klassen machen ja. Der WindowBuilder sollte damit keine Probleme machen wenn du die Panels richtig einbindest, letzlich macht der ja auch nichts anderes als dir Java Code zu generieren aus deinen Editor Einstellungen. Mit getContentPane wird das standard ContentPane des JFrames angesprochen. Braucht man ab Java5 nicht mehr explizit zu schreiben, die add Methode des JFrames ruft die Methode von selbst auf wenn man etwas hinzufügt.
 

martin1989

Aktives Mitglied
ok danke! dann werde ich dies mit externen klassen versuchen um die übersicht zu wahren :)

wie würd ich das den machen, so

Code:
public class GUIOne extends JPanel {

	GUIOne panelCont = new GUIOne();
	
		
}

oder so

Code:
public class GUIOne {

	JPanel panelCont = new JPanel();
	

	
}

eher auf die zweite Variante oder?
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Mit der Ersten würdest du eine Rekursion ohne Abbruchbedingung bauen, die in einem HeapSpaceError resultieren wird.

Wie du das machen solltest, hängt davon ab, was du machen möchtest.
Möchtest du gui.addComponent(card1) schreiben oder gui.addComponent(card1.getComponent())?
 

martin1989

Aktives Mitglied
beim ersteren mache ich ja quasi eine klasse die sich wie JPanel verhählt (da extends).
Da ist die Pane ja selbst das objekt/die instanz.

Beim zweiten habe ich ja ein Objekt/Instanz mit den Attributen Pane, Button usw


Wenn ich das richtig verstehe?




Wie ich es schreibe ist mir eigentlich egal :)



Mein Problem was ich ein wenig habe ist, dass dies mein erstes Projekt mit SWING ist und ich mir nicht ganz sicher bin was gehört in welche Klasse bzw. wie muss ich das ganze aufbauen. Für was macht man eine eigene Klasse usw?
Ich hab mir zwar das MCV Framework angeschaut, auch in Verbindung mit SWING und versuche es schon an das angelehnt zu machen.
Aber ich bin mir eben nicht sicher was ich jetzt als Controller Klasse machen soll, was als Model und was als View Klasse.

so als richtiline hab ich mir vorgenommen die sachen was die ausgabe am bildschirm angegeht in "view" klassen zu packen, die sachen mit der benutzereingabe als "controller" klassen und daten verarbeiten als "model" klassen.

nur wie die ganzen zusammenspielen/kommunizieren .... eben der aufbau/die struktur so eines SWING GUI projektes ist mir nicht ganz klar. Weiß da jmd. vll eine hilfreiche Seite wo dies speziell behandelt wird?


Danke!
 

franky27

Bekanntes Mitglied
Du baust dir eine Klasse die von JPanel erbt, aber instanzierst die dort wo du sie brauchst.
Edit: Ich persönlich würde dir raten mit Swing per Hand anzufangen, lass den Builder weg. Damit du lernst wie was zusammenhängt usw. Bevor ich mir Gedanken über MVC etc machen würde, wäre es sinniger erstmal kleine Klassen zu schreiben und zu lernen wie die untereinander kommunizieren etc.
 
Zuletzt bearbeitet:

martin1989

Aktives Mitglied
vielen dank für deine antwort! ich werde mir dies zu herzen nehmen.

könntest du mir vll noch einen kleinen denkanstoß/hinweis geben zur struktur/aufbau meines Programmes?

Also was ich immer wieder lese ist, trenne gui von den daten / datenverarbeitung.
Nun stellt sich für mich die frage was ist den nun der code der nur die gui behandelt?
Vermute mal, dass dies die ganzen swing befehle/methoden sind wie frame.pack / jpanel.add usw usw
Liege ich hier richtig?

Zum Aufbau meines Programmes:

Ich plane eine Oberfläche die drei verschiedene darstellungen hat (eine fixe menüleiste ganz oben, die immer gleich bleibt). Würde dies so aufbauen:

2-3 Klassen für das Dateneinlesen/aufbereitung und speicherung (nehme die daten aus einem xml file)
2-3 Klassen für Rechenmethoden die ich an diesen Daten vornehmen (sortieren, addieren, Kennzahlen bilden usw)

und jetzt weiß ich nicht mehr genau weiter?

für jedes jpanel eine klasse die nur die anordung und das design der gui beschreibt? (welcher button wo sitzt zB)

Und dann nochmal 2-3 Klassen für die Darstellung der Daten? Also das die daten dann an die gui sendet? Hier fehlen mir noch die Befehled dazu wie man das so macht?

Hat das ungefähr so Hand und Fuß oder würdest du mir einen anderen Aufbau empfehlen?


Vielen vielen Dank!
 

Gucky

Top Contributor
Das hat Hand und Fuß.
Grob würde uch es auch so machen.

GUI Code ist der Code, der das GUI darstellt. Also nicht die main Methode und auch nicht die Klasse, die das erste Objekt ds GUI erzeugt, sondern die Klassen, die beschreuben, wo ein Button ist und wo keiner ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JavaFX Grundlegende Verständnisfrage JavaFX<->Scene Builder AWT, Swing, JavaFX & SWT 12
M JTable Grundlegende Fragen AWT, Swing, JavaFX & SWT 4
Q Swing Zeichenprogramm, grundlegende Fragen AWT, Swing, JavaFX & SWT 8
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7
D Frage @ someActionEvent.getActionCommand() AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben