2017-11-23 12 views
2

이제 FX FileDialog에 집중하려고합니다. 대화 상자 바깥을 클릭하면 대화 상자에 초점이 맞춰집니다. 외부를 클릭 할 때 어떤 방법 으로든 다이얼로그를 호출하면 그를 볼 수있게 만들어줍니다. 타이 :)JavaFX FileDialog 포커스

나는 이것 같이 어떤 것을 시도했다.

...focusedProperty().addListener((obs, oldVal, newVal) -> System.out.println(newVal ? "Focused" : "Unfocused")); 

이 방법을 maeby은 ...

fileChooser.addEventHandler(WindowEvent.WINDOW_SHOWN, new EventHandler<WindowEvent>(){ 
         @Override 
         public void handle(WindowEvent window) 
         {... 

답변

0

, addEventHandlerjavafx.stage.FileChooser 내부 를 사용하여 초점을 처리 할 방법이 없습니다하지만 당신은 단순히 다른 상단에 귀하의 FileChooser 항상 볼 수 있도록 primaryStage.setAlwaysOnTop(true);을 사용할 수 있습니다 창

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.StackPane; 
import javafx.stage.FileChooser; 
import javafx.stage.Stage; 


public class JavaFXtest5 extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     Button btn = new Button(); 
     btn.setText("Test"); 

     FileChooser chooser = new FileChooser(); 

     btn.setOnAction(new EventHandler<ActionEvent>() { 

      @Override 
      public void handle(ActionEvent event) { 
       primaryStage.setAlwaysOnTop(true); 
       chooser.showOpenDialog(primaryStage); 
       primaryStage.setAlwaysOnTop(false); 
      } 
     }); 

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

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

     primaryStage.setTitle("Hello Dialog!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

}