JavaFX Verständnisfrage EventHandler<ActionEvent> Implementierung in meiner Klasse

B

BigMemo007

Aktives Mitglied
Hallo liebes Forum,

habe in meine Klasse MyActionHander den EventHander<ActionEvent> implementiert und nantürlich die abstrakte Methode hande(ActionEvent event) auch.

Folgender Code funktioniert wunderbar:

Java:
public class MyActionHandler implements EventHandler<ActionEvent>{
    
    
    @Override
    public void handle(ActionEvent event) {
    
        Object o = event.getSource();
        MyObjects myObjects = GUIBooking.getMyObjects();
        
        if (o == myObjects.getBtnRemItemIncome()) {
            System.out.println("Einnahmen-Eintrag löschen");
            
        } else if (o == myObjects.getBtnAddItemIncome()) {
            System.out.println("Einnahmen-Eintrag hinzufügen");
        
        } else if (o == myObjects.getBtnRemItemOutgoings()) {
            System.out.println("Ausgaben-Eintrag löschen");
            
        } else if (o == myObjects.getBtnAddItemOutgoings()) {
            System.out.println("Ausgaben-Eintrag hinzufügen");
        }
        
    }
}//end class

aber folgender Code wirft NullPointer-Exceptions aus

Java:
public class MyActionHandler implements EventHandler<ActionEvent>{
    
    MyObjects myObjects;
    
    public MyActionHandler(){
        myObjects = GUIBooking.getMyObjects();
    }
    
    @Override
    public void handle(ActionEvent event) {
    
        Object o = event.getSource();
        
        if (o == myObjects.getBtnRemItemIncome()) {
            System.out.println("Einnahmen-Eintrag löschen");
            
        } else if (o == myObjects.getBtnAddItemIncome()) {
            System.out.println("Einnahmen-Eintrag hinzufügen");
        
        } else if (o == myObjects.getBtnRemItemOutgoings()) {
            System.out.println("Ausgaben-Eintrag löschen");
            
        } else if (o == myObjects.getBtnAddItemOutgoings()) {
            System.out.println("Ausgaben-Eintrag hinzufügen");
        }
        
    }
}//end class

Der 2. Code hätte den Vorteil, dass das Objekt myObject einmal zugewiesen werden müsste und nicht bei jedem Button-Klick neu. Warum wirft der 2. Code NullPointer-Exceptions aus?
 
kneitzel

kneitzel

Top Contributor
Dazu wird man dir mit den vorliegenden Informationen wohl nichts sagen können. Wie ist denn GUIBooking aufgebaut? Vermutlich liefert getMyObjects() null zurück zu dem Zeitpunkt, an dem Du MyActionHandler erstellst.

Das ist aber auch ein schlechter Aufbau - Du scheinst hier mit statischen Variablen / Methoden zu arbeiten. Besser wäre da ein Konstrukt wie:
Java:
public class MyActionHandler implements EventHandler<ActionEvent>{
    
    MyObjects myObjects;
    
    public MyActionHandler(final MyObjects myObjects){
        this.myObjects = myObjects;
    }

Somit kannst Du die Instanz von MyObjects mit übergeben. Aber das nur ganz am Rande. Generell neige ich auch dazu, die Behandlung aufzuteilen. Dann wäre bei jedem Button eine eigene Methode, die aufgerufen wird. Und das gehört dann auch nicht in eine eigene Klasse sondern kann direkt in der Klasse stattfinden, in der auch die Buttons sind / erstellt werden.
 
B

BigMemo007

Aktives Mitglied
@JustNobody
Vielen Dank. Ich habe es nach deinem Vorschlag gemacht. Beim der Erstellung von MyActionHandler wird das MyObjects als Argument mit übergeben, somit gibt es keine Probleme :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JavaFX Grundlegende Verständnisfrage JavaFX<->Scene Builder AWT, Swing, JavaFX & SWT 12
L JavaFX Verständnisfrage zu JavaFX FXML und Controller-Klasse AWT, Swing, JavaFX & SWT 1
M Swing JButton-Konstruktor Icon-Parameter (Verständnisfrage) AWT, Swing, JavaFX & SWT 7
S Verständnisfrage EventListener AWT, Swing, JavaFX & SWT 6
S Verständnisfrage anonye Klasse ActionListener AWT, Swing, JavaFX & SWT 4
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
hdi Swing Erstmaliges setVisible - Verständnisfrage AWT, Swing, JavaFX & SWT 5
hdi Verständnisfrage: Container vs. Component AWT, Swing, JavaFX & SWT 3
V Verständnisfrage: Welche Positionierungskonstanten? AWT, Swing, JavaFX & SWT 4
V Verständnisfrage Text und anschließende Bildausgabe? AWT, Swing, JavaFX & SWT 6
R Verständnisfrage BufferStrategy: g.dispose() AWT, Swing, JavaFX & SWT 3
K Verständnisfrage zum CellRenderer AWT, Swing, JavaFX & SWT 4
A Verständnisfrage zur Ereignisbehandlung AWT, Swing, JavaFX & SWT 5
B Java FX In control.TreeCell-Implementierung Binding erzeugen AWT, Swing, JavaFX & SWT 0
H JTextArea - farbige Zeilen .. bitte um Vorschläge zur Implementierung AWT, Swing, JavaFX & SWT 1
S Swing SwingWorker - richtige Implementierung doInBackground() AWT, Swing, JavaFX & SWT 5
F Problem mit Implementierung von Kollisionsabfrage AWT, Swing, JavaFX & SWT 5
W Java AWT/GUI Implementierung gesucht AWT, Swing, JavaFX & SWT 3
M Implementierung der generalisierten Houghtranformation AWT, Swing, JavaFX & SWT 4
E Implementierung des Windows Rechners? AWT, Swing, JavaFX & SWT 7
N AWT seperate ActionHandler Implementierung AWT, Swing, JavaFX & SWT 2
Dit_ Swing MutableComboBoxModel | Implementierung AWT, Swing, JavaFX & SWT 10
hdi Swing Gemeinsame JTable-Implementierung AWT, Swing, JavaFX & SWT 23
E AWT Implementierung einer Anweisung in Methode ActionPerformed AWT, Swing, JavaFX & SWT 2
R JTable: Implementierung einer JTable in einer JScrollPane AWT, Swing, JavaFX & SWT 2
cowabunga1984 Implementierung von Graphics2D AWT, Swing, JavaFX & SWT 2
S Implementierung Java Swing HelloWorld - verständnisproblem AWT, Swing, JavaFX & SWT 3
M Implementierung einer Zusammenstellung (AWT) AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Anzeige

Neue Themen


Oben