Java gui objekte anlegen und löschen?

1 Antwort

Um grafische Oberflächen in Java zu bauen, solltest du dir zunächst ein GUI Toolkit heraussuchen, mit dem du arbeiten möchtest und dich in dieses etwas einarbeiten. Für Desktopanwendungen gibt es bspw. Swing, OpenJFX (siehe auch JavaFX) oder SWT. Ebenso könntest du dir eine mobile Android-App bauen (dort werden GUIs via XML beschrieben) oder eine Webanwendung (mit JSP/JSF/GWT/o.ä.).

Optimalerweise teilst du deine Anwendung in Teilbereiche wie View (grafische Oberfläche), Model (Klassen, die die Daten speichern und Anwendungslogik enthalten) und Controller (Kommunikationsglied zwischen View und Model) ein (siehe auch: MVC).

Ein sehr simples Beispiel:

Du hast eine Model-Klasse Person:

public class Person {
  private String name;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

Instanzen dieser werden irgendwo gespeichert. Vielleicht in einer Datei, vielleicht in einer Datenbank oder vielleicht doch nur temporär in einem Array / einer Liste.

Dann hast du also auch eine Klasse, die diese Speicherung handhabt (folgend der Einfachkeit halber nur eine Liste).

public class PersonStore {
  private List<Person> persons = new ArrayList<>();

  public void addPerson(Person person) {
    persons.add(person);
  }

  public void removePerson(Person person) {
    persons.removeIf(p -> (p.getName().equals(person.getName()));
  }

  // some other methods ...
}

Anschließend folgt die Anknüpfung an das View. In Swing könnte man bspw. einen Action Listener an einen Button anhängen, der dann die entsprechende Anweisung im Model veranlasst.

deletePersonButton.addActionListener(event -> {
  String name = inputField.getText();
  personStore.removePerson(name);
});

Die Variablen inputField und personStore wären in diesem Fall Felder der View-Klasse, bei Swing bietet es sich eher an, kleine Controller als anonyme Klassen im View anzuführen; lies dazu auch hier).

Mittels Observer Pattern könnte man anschließend das View sich aktualisieren lassen. Schau dir dazu PropertyChangeListener an (oder hier noch ein Beispiel).

Vinzenzo526 
Fragesteller
 09.07.2020, 15:56

Vielen dank für die ausführliche antwort. Hat mit sehr geholfen

0