2016-04-19 22 views
0

Ich lerne jetzt Java für 3 Wochen und ich frage mich, wie ich den Wert des gewählten Elements (nur Strings) einer ChoiceBox ohne lambdas mit einem Listener erhalten. Ich benutze keine lambdas, weil ich verstehen will, was dahinter steckt. Ich habe den folgenden Code:JavaFX - Holen Sie sich den Wert einer ChoiceBox ohne Lambdas

public class Main extends Application {  

    public static void main(String[] args) { 
     launch(args);        
    } 

    @Override             
    public void start(Stage stage) throws Exception {  

     //BAUSTEINE: 
     ChoiceBox<String> choiceBox = new ChoiceBox<String>();   
     choiceBox.getItems().addAll("item1", "item2", "item3");  
     choiceBox.setValue("item1");          

     choiceBox.getSelectionModel().selectedItemProperty().addListener() 

     //THIS IS THE PLACE FOR THE LISTENER CODE WHICH I NEED ;) 


     //LAYOUT: 
     VBox vBox = new VBox(); 
     vBox.setPadding(new Insets(20,20,20,20)); 
     vBox.setSpacing(10); 
     vBox.getChildren().addAll(choiceBox);     

     //EIGENSCHAFTEN DER SCENE: 
     Scene scene = new Scene(vBox, 300, 250); 

     //EIGENSCHAFTEN DER STAGE: 
     stage.setScene(scene); 

     //PROGRAMMSTART: 
     stage.show();          
    } 
} 

Antwort

1

Alle diese drei sind identisch:

choiceBox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() 
    { 
    @Override 
    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) 
    { 
     System.out.println(observable + oldValue + newValue); 
    } 
    }); 

    choiceBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { 
    System.out.println(observable + oldValue + newValue); 
    }); 

    choiceBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> System.out.println(observable + oldValue + newValue)); 
+0

Vielen Dank Björn! Etwas, was ich mich im Moment frage ist, Leute, die Java für einige Jahre programmieren, wissen sie zum Beispiel jede Methode, die implementiert werden muss, weil sie in ihrer Schnittstelle von der Java API, auch die Syntax jeder Klammer, abstrakt ist das hat sich geändert (ObservableValue beobachtbar, String oldValue, String newValue)? Oder lassen sie die IDE einfach viel ausfüllen? – Richi888

+0

Als ich mit der Java-Programmierung anfing, benutzte ich hauptsächlich jEdit ohne die meisten IDE-ähnlichen Plugins, also hauptsächlich einen Texteditor. Das hat mir sehr geholfen, es in mein Blut zu bekommen. Aber heutzutage verwende ich IntelliJ IDEA, die beste Java IDE unter der Sonne. Und damit ist die Implementierung aller abstrakten Methoden oder Interface-Methoden nur ein Tastendruck, genauso wie das Überschreiben von Methoden. Und ich bezweifle, dass viele Entwickler wirklich mit einem Texteditor beginnen. Auch heutzutage ist die API so gewachsen, dass es unmöglich ist, alles genau zu verstehen. – Vampire

+1

BTW, wenn die Antwort Ihre Frage gelöst hat, sollten Sie lesen und gehorchen http://StackOverflow.com/Help/Someone-answers – Vampire

Verwandte Themen