2017-11-27 10 views
0

나는 ChoiceBox을 가지고 있으며, 사용자가 확장 할 때마다 내용을 새로 고침하고 싶습니다. 나는 이것을 위해 적절한 청취자를 찾지 못했습니다. Google이 제공하는 모든 것들은 ChangeValue 이벤트를 처리하는 것과 관련됩니다.Javafx는 선택 상자에 드롭 다운 이벤트 리스너를 추가합니다.

제가 처리해야 할 내용이 ChoiceBox을 클릭 했으므로 eventListener<ActionEvent> ~ ChoiceBox을 추가해야하지만 구현이 작동하지 않습니다.

임의의 List 값을 클릭하면 ActionEvent가 발생하고 ChoiceBox을 클릭하면 재생되지 않습니다.

답변

1

에 리스너를 등록 선택 상자의 showingProperty :

import javafx.application.Application; 
import javafx.geometry.Insets; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.ChoiceBox; 
import javafx.scene.layout.BorderPane; 
import javafx.stage.Stage; 

public class ChoiceBoxPopupTest extends Application { 


    private int nextValue ; 

    @Override 
    public void start(Stage primaryStage) { 
     ChoiceBox<Integer> choiceBox = new ChoiceBox<>(); 
     choiceBox.getItems().add(nextValue); 
     choiceBox.setValue(nextValue); 
     choiceBox.showingProperty().addListener((obs, wasShowing, isNowShowing) -> { 
      if (isNowShowing) { 
       choiceBox.getItems().setAll(++nextValue, ++nextValue, ++nextValue); 
      } 
     }); 
     BorderPane root = new BorderPane(); 
     root.setTop(choiceBox); 
     BorderPane.setAlignment(choiceBox, Pos.CENTER); 
     root.setPadding(new Insets(5)); 
     Scene scene = new Scene(root, 400, 400); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
: 여기
choiceBox.showingProperty().addListener((obs, wasShowing, isNowShowing) -> { 
    if (isNowShowing) { 
     // choice box popup is now displayed 
    } else { 
     // choice box popup is now hidden 
    } 
}); 

가 빠른 데모입니다