Marc Reichelt: GUI-Anwendung - Strukturierung des Programms

Beitrag lesen

Hallo,

Um das vll noch mal abstrahiert darzustellen: Wie strukturiere ich GUI und den Programmkern, bzw. wie verknüpfe ich beide am besten?

Für Links, Erklärungen oder gerne auch Beispiele wäre ich dankbar!

Ich halte es generell für gut, Gruppen von Funktionalitäten in JPanels zu gruppieren - und nicht das ganze Fenster (JFrame).
Das hat vor allem den Vorteil, dass man nachher flexibler ist, wenn die GUI-Gruppen später beispielsweise nicht ein ganzes Fenster füllen sollen, sondern z. B. Bestandteile von anderen GUI-Gruppen sind.
Ein sehr einfaches Beispiel habe ich auch parat.

Code für Datei "Program.java":

import javax.swing.JFrame;  
  
public class Program {  
  
 public static void main(String[] args) {  
  JFrame f = new JFrame("Fenster");  
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  
  f.add(new Configuration());  
  
  f.setSize(300, 100);  
  
  f.setVisible(true);  
 }  
  
}

Code für Datei "Configuration.java":

import javax.swing.JButton;  
import javax.swing.JPanel;  
import javax.swing.JTextField;  
  
public class Configuration extends JPanel {  
  
 public Configuration() {  
  this.add(new JButton("eins"));  
  this.add(new JButton("zwei"));  
  this.add(new JTextField("drei"));  
 }  
  
}

Natürlich kann man das auch schöner realisieren (beispielsweise muss die Klasse "Configuration" ja selbst nicht von JPanel abgeleitet sein, sondern kann dieses einfach nur über eine Methode zurückliefern), aber das grundsätzliche Prinzip ist klar. Wenn diese drei (gruppierten) Konfigurationselemente später nicht in ein JFrame, sondern z. B. in einen Dialog oder sogar in ein anderes JPanel übernommen werden sollen, braucht man den Code der Klasse Configuration nicht anzufassen.

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)