Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design?

ernst

Top Contributor
Hallo allerseits,
habe viele Listener (Wanzen) in meinem GUI-Programm, z.B. an verschiedene Schieberegler angebracht. Die Werte von b_1 und b_2 dieser Schieberegler beeinflussen dann z.B. das Aussehen des Schaubilds wie z.b. f(x) = b_1 * x + b_2
Die entsprechenden Einfang-Methoden (die geworfene Objekte z.B. der Schieberegler einfangen) liefern dem Programm dann die zu verarbeitenden Daten: b_1 und b_2
In den entsprechenden Einfang-Methoden wie z.B.
public void stateChanged(ChangeEvent e)
müssen dann diese Daten b_1 und b_2 durch den Aufruf entsprechender Methoden verarbeitet werden, bei mir z.B. durch die Methode:
malfläche.maleInsBild()

Ich habe jetzt folgende Überlegung gemacht:
Erzeuge eine Klasse
Steuerung{
private static double b_1; // Daten
private static double b_2; // Daten
private static Malflaeche malfläche; // Verarbeitungsvariable

// mit den entsprechenden set- und get-Methoden.
}

Wenn die malfläche im Konstruktor erzeugt wird, speichere ich diese sofort in der Klasse Steuerung ab.
Wenn durch ein Ereignis (wie z.B. Bewegung des Schiebereglers) der Wert von b_1 bzw. b_2 verändert wird, wird in der entsprechenden Einfang-Methode der Wert sofort in der Klasse Steuerung abgespeichert bzw. im Aufruf einer Methode der Verarbeitungsvariable
wie z.B. malfläche.maleInsBild() aus der KLasse Steuerung ausgelesen und z.B. zum Zeichnen genutzt.

Dadurch hat sich mein Programm wesentlich vereinfacht:
Viele Objekte müssen sich nicht mehr kennen, viele Konstruktoren haben keine Parmeter mehr, usw.

Frage:
Verletzt dieses Prinzip die Regeln der OOP bzw. was haltet ihr davon ?
mfg
ern
 

ernst

Top Contributor
Was ist eine "Einfang-Methode" ?
Beispiele für Einfang-Methoden:
public void keyReleased(KeyEvent e)
public void keyTyped(KeyEvent e)
public void keyPressed(KeyEvent e)
public void stateChanged(ChangeEvent e)

Wie nennst du diese Methoden?
Listener, Wanzen ?
mfg
ern
 

ernst

Top Contributor
Was ist das denn? o_O


Generell: Verzichte auf jegliches static.
Das oben beschrieben les zumindest ich so, dass du alle "sich kennenden Objekte" durch static ersetzt hat, das ist in jedem Fall schlechter Stil. Vielleicht ist es aber auch völlig anders gemeint?

Es ist so:
Die Werte von b_1 und b_2 produziert der Anwender durch Benutzung des Schiebereglers.
Die Variable malfläche verarbeitet diese Werte (durch Verwendung einer Methode).
_Nur_ diese 3 wichtigsten Variablen (nicht _alle_ Variablen meines Programms) kapsle (und speichere) ich in der Klasse Steuerung, weil diese in der Hauptsache für die Dynamik des Programms verantwortlich sind.
static nehme ich, weil ich kein Objekt der Klasse Steuerung brauche.

Ist das von mir angewandte Prinzip nicht OOP gemäß?


Mfg
ern
 

ernst

Top Contributor
>
>Wanzen und Einfang-Methoden hör ich zum ersten Mal...
>
ja, dient nur zur Veranschaulichung.

>
>Nein, static widerspricht OOP.
>
1) kannst du das belegen (Quellen?)
2) Warum erlaubt Java dann static ?

>
>Außerdem ist eine Klasse "Steuerung", die nichts steuert, sondern 3 unabhängige >Variablen enthält, etwas komisch...
>
Das stimmt.
Weisst du einen besseren Namen ?
Es geht darum:
In b_1, b_2 sind die Werte, die von den Anwendern über die Listener als input kommen.
malflaeche ist die Variable, die eine Methode liefert, die diese Werte verarbeitet
und einen output liefert.
Im Prinzip steuern diese Variablen das ganze Programm.

mfg
ern


Frage:
 

mrBrown

Super-Moderator
Mitarbeiter
1) kannst du das belegen (Quellen?)
2) Warum erlaubt Java dann static ?

Mit static hast du keine Objekte mehr, sondern die Klassen dienen nur als Namespace für Variablen und Methoden.
So ziemlich alles, was OOP ausmacht, hast du mit static nicht (Polymorphie, spätes binden, Messages zwischen Objekten, ...)

In deinem Fall: Steuerung ist kein Objekt, sondern einfach nur noch Namespace für 3 Variablen.

Warum es trotzdem benutzt wird: Es ist für vieles praktischer (zB Konstanten (Math.PI), Funktionen (Math.min), Programmeinstieg (main)), im Entwurf ist es aber nicht nötig und oft eher hinderlich.


Weisst du einen besseren Namen ?
Ja: "" ;)
Lass die Klasse weg, bisher ist die nur überflüssig.

In b_1, b_2 sind die Werte, die von den Anwendern über die Listener als input kommen.
malflaeche ist die Variable, die eine Methode liefert, die diese Werte verarbeitet
und einen output liefert.
Und warum sollte man dann diese drei Zusammen in irgendeine Klasse legen?

Der Controller, der b_1 und b_2 (die Namen solltest du auch dringendst ändern...) ändert, kann auch einfach direkt die MalFläche kennen und die Werte direkt setzen.
 

ernst

Top Contributor
Vielen Dank an alle für eure wertvollen Hinweise.
Ich werde mein Projekt jetzt mit dem MVC Muster realsieren, damit ich einen Vergleich habe und mich danach evtl. noch mal melden.

mfg
ern
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JavaFX MVVM Prinzip und Binding AWT, Swing, JavaFX & SWT 23
E wie fängt man verschiedene Ereignisse ein mit MVC ? AWT, Swing, JavaFX & SWT 42
P JavaFX Kalender mit Kacheln für Ereignisse AWT, Swing, JavaFX & SWT 4
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
M Inhalte einer FlowPane AWT, Swing, JavaFX & SWT 4
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
K JavaFX ViewTable mit einer LinkedList befüllen AWT, Swing, JavaFX & SWT 3
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
MiMa Selektion aus einer ListView AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
J Suchmaschine einer Datenbank AWT, Swing, JavaFX & SWT 5
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
J JavaFX - Felder (Label) in einer ForSchleife bearbeiten AWT, Swing, JavaFX & SWT 4
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
C JavaFX Tief setzen in der Überschrift einer Tabellenspalte AWT, Swing, JavaFX & SWT 3
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
M Wert einer Zelle aus JTable ziehen AWT, Swing, JavaFX & SWT 4
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26
P JavaFX Slider soll Value erst ab einer bestimmten Bedinung aendern AWT, Swing, JavaFX & SWT 19
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
X Zeilen aus einer Textdatei einzelnd als String abrufen AWT, Swing, JavaFX & SWT 8
R JavaFX Wert einer ChoiceBox bekommen ohne Lambdas AWT, Swing, JavaFX & SWT 11
W Swing bzgl. Tableskalierung/Darstellung einer Matrix AWT, Swing, JavaFX & SWT 8
F JavaFX ChoiceBox Name als Auswahl bei einer Objektliste AWT, Swing, JavaFX & SWT 4
F JavaFX Mit einer Methode auf Stage zugreifen. AWT, Swing, JavaFX & SWT 8
S Dreiecke in bestimmte Zellen einer JTable AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben