2014-12-13 7 views
0

moused가 표시 될 때 마우스가 경계를 벗어나면 마우스를 숨기는 단계에있는 컨트롤을 구현하려고합니다.마우스 커서가 JavaFX의 숨겨진 스테이지 나 장면 위에있을 때이를 감지 할 수 있습니까?

나는 그것을 작동하지 않았다 정말 놀랐 아니에요

Stage.getScene().setOnMouseEntered((MouseEvent mEntered) -> {Stage.show();}); 
Stage.getScene().setOnMouseExited((MouseEvent mExited) -> {Stage.hide();}); 

을 시도했다, 그러나 그것은 나를 매우 도움이되지 않습니다.

마우스가 스테이지 나 장면 위에있을 때이를 감지 할 수 있습니까?

답변

0

여러 스레드를 지금 읽었으므로 모두 넣었을 때 실제로 달성하고자하는 것을 얻지 못했습니다. 어쩌면 당신이 그것에 대해 자세히 설명해 준다면 다른 해결책이 더 적절할 수 있습니다.

어쨌든 투명한 버튼의 경우, 마우스 이벤트를 등록하기 위해 투명도가 낮은 투명도를 사용하지만 완전히 투명하지는 않습니다. 응용 프로그램이 완전히 투명하면 마우스 이벤트가 발생하지 않습니다.

여기 당신이 그것을 할 수있는 방법에 대한 예입니다 :

import javafx.animation.FadeTransition; 
import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.input.MouseEvent; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.Pane; 
import javafx.scene.paint.Color; 
import javafx.stage.Stage; 
import javafx.stage.StageStyle; 
import javafx.util.Duration; 

public class Main extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     try {    


      Pane pane = new Pane(); 

      HBox hbox = new HBox(); 

      hbox.setSpacing(12); 

      Button button1 = new Button("Button 1"); 
      Button button2 = new Button("OMG Magic!"); 
      Button button3 = new Button("Button 3"); 

      hbox.getChildren().addAll(button1, button2, button3); 

      pane.getChildren().add(hbox); 


      final Scene scene = new Scene(pane, Color.TRANSPARENT); 

//   scene.getRoot().setStyle("-fx-background-color: transparent"); 
      scene.getRoot().setStyle("-fx-background-color: rgba(1,1,1,0.004)"); 

      primaryStage.initStyle(StageStyle.TRANSPARENT); 
      primaryStage.setScene(scene); 

      primaryStage.show(); 

      // initial opacity of button 2 
      button2.setOpacity(0.0); 

      // button2: fade-in on mouse scene enter 
      scene.addEventHandler(MouseEvent.MOUSE_ENTERED, evt -> { 

       System.out.println("Mouse entered"); 

       FadeTransition fadeTransition = new FadeTransition(Duration.millis(300), button2); 
       fadeTransition.setFromValue(0.0); 
       fadeTransition.setToValue(1.0); 
       fadeTransition.play(); 

      }); 

      // button2: fade-out on mouse scene exit 
      scene.addEventHandler(MouseEvent.MOUSE_EXITED, evt -> { 

       System.out.println("Mouse exited"); 

       FadeTransition fadeTransition = new FadeTransition(Duration.millis(300), button2); 
       fadeTransition.setFromValue(1.0); 
       fadeTransition.setToValue(0.0); 
       fadeTransition.play();    
      }); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

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

그것은 3 개 버튼이 표시됩니다. 버튼 2 또는 버튼 1과 버튼 3 사이의 창을 마우스로 입력하면 버튼 2가 마술처럼 나타납니다 .-)