2014-12-16 3 views
0

편집 가능으로 설정된 경우 JavaFX ComboBox에서 MouseEvent가 작동하지 않습니다. 편집 불가능한 ComboBox에서 잘 작동합니다. 편집 가능한 ComboBox에서 MouseEvent를 설정할 수있는 방법이 있습니까?편집 가능한 JavaFX ComboBox의 MouseListener

package editablecombobox; 

import javafx.application.Application; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.ComboBox; 
import javafx.scene.input.MouseEvent; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

public class EditableComboBox extends Application { 

@Override 
public void start(Stage primaryStage) { 
    ComboBox combo = new ComboBox(); 
    combo.setEditable(true); 

    combo.setOnMousePressed(new EventHandler<MouseEvent>() { //adding MouseEvent on ComboBox 
     @Override 
     public void handle(MouseEvent event) { 
      System.out.println("MOUSE PRESSED!!!"); 
     } 

    }); 

    StackPane root = new StackPane(); 
    root.getChildren().add(combo); 

    Scene scene = new Scene(root, 300, 250); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

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

} 

setOnMousePressed가 작동하지 않습니다.

+1

우리가 더 잘할 수 있도록 관련 코드를 제공해주십시오. – javaHunter

+1

당신은 특히'MouseEvent'라고 이야기하고 있습니까? 나는 onMouseEntered와 몇 가지 다른 것들을 시도했으며, 모두 작동한다. – ItachiUchiha

+0

@ItachiUchiha 내 질문을 편집했습니다. 더미 응용 프로그램을 만들었습니다. onMousePressed가 작동하지 않습니다. – Muskan

답변

0

편집 가능한 TextField 영역 인 ComboBox에 관심이있는 것 같습니다. ComboBox의 편집기 (TextField)에 MouseListener을 추가해야합니다. 사용해보기 :

combo.getEditor().setOnMousePressed(new EventHandler<MouseEvent>() {  
    @Override 
    public void handle(MouseEvent event) { 
     System.out.println("MOUSE PRESSED!!!"); 
    } 
}); 
+0

1.'getEditor'는'null'을 반환 할 수 있습니다. 아마도'editorProperty()'에 변경 사항을 등록하여 검사해야합니다. 2. 편집기는 ComboBox 컨트롤 요소의 자식이므로 마우스 이벤트가 위쪽으로 위임되어야합니다. 그렇지 않은 경우 다른 문제가있을 수 있습니다 (JavaFX 버그 일 수도 있습니다). – eckig

+0

'null '을 반환하지 않습니다. ComboBox 클래스의 editorProperty() 메소드를 사용하려고 시도합니다. – ItachiUchiha

+0

소스 코드를 파헤 치면 편집기가 속성과 함께 초기화되지만 API는 명시 적으로 상태 : "ComboBox를 편집 할 수없는 경우 편집기가 null입니다." 따라서 이것은 향후 버전에서 변경 될 수 있습니다. – eckig

관련 문제