GUI-Komponente in separate Klassen auslagern?

3 Antworten

Vermutlich hängst du sie nicht richtig an.

Befasse dich einmal mit dem MVC-Pattern. Mit diesem kannst du eine Trennung von Logik und grafischer Oberfläche schaffen.

Deinen Code schau ich mir später nochmal an und setze dann einen Kommentar unter diese Antwort. Schon jetzt würde ich dir allerdings raten, mit Layout Managern zu arbeiten.

denni9 
Fragesteller
 27.09.2018, 15:09

danke regex9!

0

Habe in der GUI nur GUI Elemente.

Habe alles kommentiert.

Dann sollte es übersichtlich sein.

Ich schreibe nun doch einfach eine neue Antwort. Deinen Code habe ich mir inzwischen genauer angeschaut.

So etwas:

Teil2 blubb = new Teil2();
Teil2.textfeld();

Solltest du nicht tun. Kapsel alles was mit deiner View zu tun hat in der Klasse.

Zum Beispiel so:

class View extends JFrame {
  public View() {
    init();
  }

  private void init() {
    // set frame settings ...

    contentPane.add(getTextField(10));
    JTextField textField2 = getTextField(10);

    textField2.setText("hello");
    contentPane.add(textField2);
  }

  private static JTextField getTextField(int columns) {
    // create and return textfield ...
  }
}

Mit der Methode getTextField kannst du den Vorgang, ein Textfeld zu erzeugen, abstrahieren. Dazu kannst du dir auch eine Helferklasse anlegen.

Wenn dein Frame aus sehr vielen Komponenten besteht, kann es durchaus Sinn machen, aufzuteilen. Beispiel: Du baust dir einen Editor und hast darin einen Objekt-Dialog, eine Preview-Box, ein Code-Fenster, etc.. Dann würde ich tatsächlich für die einzelnen Parts eigene Klassen anlegen bzw. eigene Swing-Komponenten erstellen (die bspw. von JPanel erben).

SettingsPanel settingsPanel = new SettingsPanel();
ScriptPanel scriptPanel = new ScriptPanel();
// ...
frame.add(settingsPanel);
frame.add(scriptPanel);
// ...

Jede Komponente sollte dabei für sich stehen - einen eigenen Aufgabenbereich erfüllen und möglichst unabhängig von anderen Komponenten sein.

denni9 
Fragesteller
 27.09.2018, 15:10

danke für deine hilfe!!! das hilft mir gut!!!

0