GUI-Projekt realisieren

Mongo112

Mitglied
Hallo,

Ich hatte früher schon etwas (aber nur sehr wenig) mit Java zu tun, in letzter Zeit gar nichts mehr.
Nun möchte ich wieder in die Materie einsteigen und eine einfache GUI programmieren (mit dem Window Builder und Eclipse, falls das wichtig sein sollte) und stehe vor einem Problem.

Ich habe zwei Klassen:
GUI.java
Main.java

In GUI.java soll nur die Oberfläche rein, aber keinerlei Berechnungen, in Main.java soll die gesamte Logik hinein. In der GUI-Klasse habe ich zum Beispiel ein paar Checkboxes, Buttons, JLabels,...

Jetzt möchte ich - nachdem man auf den Button geklickt hat - den Status jeder einzelnen Checkbox überprüfen und ggf. danach etwas tun. Das sollte mit einem ActionListener für den Button und für die Checkbox mit checkbox.isSelected() funktionieren, oder?

Jedoch stellt es mich schon vorher auf: WIE bekomme ich alles von der GUI-Klasse in die Main-Klasse? Also alle Checkboxes, damit ich von der Main-Klasse darauf zugreifen kann.
Ich würde das gerne mit Getter-/Setter-Methoden machen, aber wie genau?

Vielen Dank im Voraus,
Herbert
 
Also:

Klasse GUI.java: Enthält nur Buttons, Checkboxes, JLabels,...
Klasse Main.java: soll später die ganze Logik enthalten.

In GUI.java sollen keinerlei Berechnungen, die Klasse soll nur die GUI an sich beinhalten. Also muss ich von Main.java irgendwie auf die Checkboxes zugreifen können bzw. deren Status abfragen können - gleiches gilt für den Button. Die ganzen Berechnungen sollen ja erst ausgeführt werden, wenn der Button geklickt wird. Wenn alles in einer Klasse wäre, wäre das ja kein Problem, ich möchte es aber sauber in 2 Klassen aufteilen.

Wie löse ich dieses Problem?
 
Wie gesagt ich bin auch noch nicht sooo in Java vertraut, aber ich wusste gerade selber nicht, wie ich es genau gemacht hätte... . Also meine Vorstellung ist folgende:

-Klasse, in die die GUI kommt.
-Klasse, in der du sie erzeugst und wo die Logik drin ist.
-Eine Klasse, die als Listener funktioniert und die ensprechenden Methoden implementiert.

Der Listener laucht ja auf Events und je nachdem, welche Events registriert werden bzw. welcher Button geklickt wird, rufst du im ActionListener die Methoden der Logik-Klasse auf.

Ich hoffe ich verstoße mit dem Beitrag nicht gegen irgendwelche Coding-Conventions, aber das scheint mir schlüssig. Bei MVC-Pattern bin ich nämlcih selber noch nicht 😀

MfG
 
Das MVC-Muster (Model-View-Controller) ist schon dafür gedacht eine sinnvolle Trennung zu erreichen, ich empfehle dir auch da mal reinzuschauen.
Zur Kapselung kannst du in deiner Gui-Klasse natürlich Methoden anbieten wie
Code:
istXYgesetzt()
die dann von der Main-Klasse aufgerufen wird. Die
Code:
istXYgesetzt()
kapselt eigentlich nur ein
Code:
xyCheckbox.isSelected()
.
 
Hm, ich hab mir das MVC-Konzept mal angesehen und es gefällt mir schon mal ganz gut.
Folgendes Tutorial habe ich gefunden:
Tutorial: Model-View-Controller (MVC) Struktur in Java Projekten nutzen BigBastis Blog
Das hier habe ich auch noch gefunden: http://www.java-forum.org/allgemeines/91829-mvc.html

Nur irgendwie verstehe ich nicht alles davon.


In meinem Programm steht das Design der GUI - sonst noch nichts.

3 Fragen:
  • Wieso kann ich Controller und Model nicht in einer Klasse zusammenfassen?
  • Wie überprüfe ich am besten, welche der 10 Checkboxes gesetzt ist? Gibt es eine andere Möglichkeit, als bei jeder einzeln den Status mit einem if abzufragen (vlt. kann man irgendwie ein Array der Checkboxes erstellen, den Status in ein anderes Array schreiben und dieses dann ausgeben?)?
  • Je nachdem, welche Checkbox ausgewählt sind, soll in ein File ein bestimmter Text hineingeschrieben werden. Wo speichere ich den Text dazu am besten? In einem Array, wo dann je nach gewählter Checkbox der Text hinausgeschrieben wird? Wie man ein File erzeugt und hineinschreibt weiß ich, aber nicht in Verbindung mit einer GUI, wo je nach Wahl der Users Text hineingeschrieben wird.
Danke
 
Hast du denn schonmal was von Parameterübergabe gehört?

einfaches Bsp:
Java:
public class Eins {
public int addiere(String zahlA, String zahlB) {
return Integer.parseInt(zahlA) + Integer.parseInt(zahlB);
}

public class Test {
//GUI mit Textfeldern tf1 und tf2
private Eins eins;
public Test() {
this.eins = new Eins();
System.out.println("" + eins.addiere(tf1.getText(), tf2.getText());
}
}

gruß julian
 
Ja, aber was hat das mit meiner Frage zu tun? 😉

Wo speichere ich den zu den Checkboxes zugehörigen Code? Array, extra Text-File,...? Was ist die beste Methode dazu?
 
Getreu dem Motto "Programmieren lernt man nur, indem man es macht" probier das doch einfach mal und erstell ein checkbox-Array😉 um die if-Abfragen wirst du trotzdem nicht rumkommen. Eine Möglichkeit wäre halt noch, jeder Checkbox einen eigenen Listener zu geben.

MfG
 

Neue Themen


Zurück
Oben