2017-05-30 4 views
0

Ich möchte erkennen, wenn eine Registerkarte geändert wird und den ausgewählten Index abrufen. Alle Beispiele, die ich gefunden habe, scheinen veraltet zu sein, und ich konnte sie nicht erfolgreich umsetzen.ChangeListener funktioniert nicht wie beabsichtigt für JTabbedPane

Es zwingt mich, meine changeListener zu javax.swing.event.ChangeListener zu werfen, aber zur gleichen Zeit lässt mich das kompilieren. Wo gehe ich falsch?

ChangeListener changeListener = new ChangeListener() { 
      public void stateChanged(ChangeEvent e) { 
      JTabbedPane sourceTabbedPane = (JTabbedPane) e.getSource(); 
      int index = sourceTabbedPane.getSelectedIndex(); 
      System.out.println("Tab changed to: " + index); 
      } 

     @Override 
     public void changed(ObservableValue arg0, Object arg1, Object arg2) { 
      // TODO Auto-generated method stub 

     } 
     }; 
     tabbedPane.addChangeListener((javax.swing.event.ChangeListener) changeListener); 

Antwort

5

Sie die Umsetzung der falschen ChangeListener wenn Sie new ChangeListener aufrufen. Überprüfen Sie Ihre Importe. Sie sollten javax.swing.event.ChangeListener implementieren, aber es sieht so aus, als ob Sie tatsächlich javafx.beans.value.ChangeListener implementieren.

Wenn Sie Ihre Importe nicht ändern möchten, würde das Folgende auch funktionieren.

javax.swing.event.ChangeListener changeListener = new javax.swing.event.ChangeListener() { 
     @Override 
     public void stateChanged(ChangeEvent e) { 
     JTabbedPane sourceTabbedPane = (JTabbedPane) e.getSource(); 
     int index = sourceTabbedPane.getSelectedIndex(); 
     System.out.println("Tab changed to: " + index); 
     } 
    }; 
    tabbedPane.addChangeListener(changeListener); 
2

Die falsche ChangeListener importiert wird - die entsprechende Import-Anweisung überprüfen. Es sollte

import javax.swing.event.ChangeListener; 
// or import javax.swing.event.*; 

Wahrscheinlich die falsche Klasse sein wird als in der importiert wird:

import javafx.beans.value.ChangeListener; 
// or import javafx.beans.value.*; 

Wenn diese Einfuhren (JavaFX) benötigt werden, müssen Sie die vollständig qualifizierten Klassennamen verwenden, wenn Sie den Hörer zu schaffen:

javax.swing.event.ChangeListener changeListener = 
    new javax.swing.event.ChangeListener() { 
     ... 
Verwandte Themen