2016-07-04 6 views
0

콤보 상자 (해당 창의 여유 공간)를 클릭하면 콤보 상자 선택이 사라지고 null이 인쇄됩니다.상자 바깥 쪽을 클릭하면 ComboBox 선택이 손실됩니다.

<ComboBox fx:id="routineGridShowComboBox" layoutX="24.0" layoutY="56.0" onAction="#actionForRoutineGridShowComboBox" onMouseClicked="#addOptionToComboBox" prefHeight="25.0" prefWidth="384.0" promptText="Choose your subject ... " /> 
+0

충분한 정보를 제공하지 않았습니다. 아무도 e를 알지 못합니다. 지. '# addOptionToComboBox'는'ComboBox'가 어떻게 채워지는지, 어떤 일들이 일어나고 있는지 등을 말합니다. – Roland

+0

게시 한 내용은 설명하는 것을 수행하지 않습니다 - 항목을 지우고 마우스 클릭으로 다시 추가합니다. 그러나 나는 왜이 일을하는지 이해하지 못합니다. 콤보가 열렸을 때 선택을 지우려면, 예를 들어 'routineGridShowComboBox.setOnShowing ((e) -> routineGridShowComboBox.setValue (null));'과 같이 할 수 있습니다. – DVarga

답변

2

당신은 그것을 클릭하여 ComboBox 팝업을 열 때마다, 당신은 모든 항목을 (어떤을해야 제거 :

이 여기 FXML 코드 내부의 컨트롤러 클래스

@FXML 
public ComboBox routineGridShowComboBox; 

public void actionForRoutineGridShowComboBox(ActionEvent event){ 
    System.out.println(routineGridShowComboBox.getValue()); 
} 

public void addOptionToComboBox(){ 
    routineGridShowComboBox.getItems().removeAll(routineGridShowComboBox.getItems()); 
    routineGridShowComboBox.getItems().addAll("Hello","World"); 
} 

이며, 항목 목록 btw에 List.clear을 호출하여 완료). ComboBox의 값은 items에없는 값일 수 없으므로 값은 null으로 설정됩니다. ComboBox 팝업의 항목을 제외한 다른 곳을 클릭하여 새 값을 선택하지 않으면 선택한 항목이 변경되지 않습니다.

클릭 할 때마다 모든 항목을 분명히 지우고 읽어야합니다. 항목을 한 번만 추가하십시오. 이 경우 initialize 방법이이를 수행하기에 적합한 장소가됩니다.

컨트롤러로부터 addOptionToComboBox 방법을 제거

public void initialize() { 
    routineGridShowComboBox.getItems().setAll("Hello", "World"); 
} 

를 추가하거나 기존 initialize있어서 신체의 코드를 추가한다.

관련 문제