2017-07-19 5 views
0

Ich versuche, der Titelleiste der Stage einen Event-Handler hinzuzufügen, aber es funktioniert nicht.JavaFX - Event-Handler zur Titelleiste von Stage hinzufügen

Ich habe versucht, dies mit:

primaryStage.addEVentHandler(MouseEvent.MOUSE_PRESSED, (event)->{ 
    System.out.println("ok"); 
}); 

Aber es nur das Ereignis auf den Bereich der Szene registrieren und die Maus gedrückt Ereignis auf die Titelleiste nicht lesen.

Gibt es eine Möglichkeit, das Mausereignis auf der Titelleiste der Bühne zu hören?

kompletter Code:

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.input.MouseEvent; 
import javafx.scene.layout.HBox; 
import javafx.scene.text.Text; 
import javafx.stage.Stage; 

public class demo extends Application { 

    @Override 
    public void start(final Stage primaryStage) { 
     HBox box = new HBox(); 
     Scene scene = new Scene(box, 350, 250); 

     Text text = new Text("Test"); 
     box.getChildren().add(text); 

     primaryStage.addEventHandler(MouseEvent.MOUSE_PRESSED,(event) -> { 
      System.out.println("ok"); 
     }); 
     primaryStage.setScene(scene); 
     primaryStage.setTitle("TimePicker"); 
     primaryStage.show(); 
    } 

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

Antwort

0

Soweit ich weiß, ist dies nicht möglich ist, da der Benutzer ein bestimmtes Verhalten von Interaktion mit dem titlebar erwartet wie von dem zugrunde liegenden Betriebssystem bestimmt. Wenn Sie beginnen, Mausereignisse in der Titelleiste zu behandeln, würden Sie dieses erwartete Verhalten wahrscheinlich stören.

Dies gesagt, durch das Verstecken der Titelleiste mit der Einstellung primaryStage.initStyle(StageStyle.UNDECORATED); wäre es möglich, Ihre eigene Titelleiste zu implementieren, die Ihr benutzerdefiniertes Verhalten bietet.

0

Ich konnte nichts mit der Standardtitelleiste des Systems tun. Es ist kein Knoten und reagiert nicht in einem negativen Koordinatenraum.

Mögliche Abhilfe: Erstellen Sie Ihre eigene Titelleiste!

Machen Sie Ihre erste Stufe und stylen Sie sie als StageStyle.UNDECORATED.

Verwenden Sie ein Root-Fenster wie BorderPane, um Ihre eigene Titelleiste oben zu entwickeln.

Sehen Sie sich link an, um eine UNDECORATED-Bühne ziehbar zu machen (im Grunde ziehen Sie die Oberseite Ihres BorderPane).

Viel Glück!

+0

Was dann Combobox tun, um das Popup zu verbergen? – KeepMove

+0

Es tut mir leid, was Pop-up? – Eric

+0

der Bereich, die E-Mails enthalten, wie in diesem Bild gezeigt http://docs.oracle.com/javafx/2/ui_controls/img/combobox-simple.png – KeepMove

Verwandte Themen