Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX-将事件处理程序添加到Stage';标题栏_Java_Javafx_Event Handling_Addeventlistener_Stage - Fatal编程技术网

JavaFX-将事件处理程序添加到Stage';标题栏

JavaFX-将事件处理程序添加到Stage';标题栏,java,javafx,event-handling,addeventlistener,stage,Java,Javafx,Event Handling,Addeventlistener,Stage,我正在尝试将事件处理程序添加到阶段的标题栏,但它不起作用 我试着用这个: primaryStage.addEVentHandler(MouseEvent.MOUSE_PRESSED, (event)->{ System.out.println("ok"); }); 但它只将事件注册到场景区域,不会读取标题栏上的鼠标按下事件 有没有办法在舞台标题栏上收听鼠标事件 完整代码: import javafx.application.Application; import javafx.

我正在尝试将事件处理程序添加到阶段的标题栏,但它不起作用

我试着用这个:

primaryStage.addEVentHandler(MouseEvent.MOUSE_PRESSED, (event)->{
     System.out.println("ok");
});
但它只将事件注册到场景区域,不会读取标题栏上的鼠标按下事件

有没有办法在舞台标题栏上收听鼠标事件

完整代码:

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);
    }    
}

据我所知,这是不可能的,因为用户期望通过与标题栏的交互实现某种行为,而这是由底层操作系统决定的。如果您开始在标题栏上处理鼠标事件,您可能会干扰此预期行为


也就是说,通过设置
primaryStage.initStyle(StageStyle.UNDECORATED)隐藏标题栏可以实现您自己的标题栏,它提供了您的自定义行为。

据我所知,这是不可能的,因为用户希望通过与标题栏的交互实现特定的行为,这由底层操作系统决定。如果您开始在标题栏上处理鼠标事件,您可能会干扰此预期行为


也就是说,通过设置
primaryStage.initStyle(StageStyle.UNDECORATED)隐藏标题栏可以实现您自己的标题栏,它提供您的自定义行为。

我不知道如何使用系统默认标题栏。它不是一个节点,也不会在负坐标空间中响应

可能的解决方法:创建自己的标题栏

制作您的主舞台,并将其设计为StageStyle.Undecoraded

使用根窗格(如BorderPane)在顶部创建自己的标题栏

有关使未装饰的舞台可拖动(基本上是拖动边框窗格的顶部)的信息,请参见此


祝你好运

我不知道如何使用系统默认标题栏。它不是一个节点,也不会在负坐标空间中响应

可能的解决方法:创建自己的标题栏

制作您的主舞台,并将其设计为StageStyle.Undecoraded

使用根窗格(如BorderPane)在顶部创建自己的标题栏

有关使未装饰的舞台可拖动(基本上是拖动边框窗格的顶部)的信息,请参见此


祝你好运

那么combobox如何隐藏弹出窗口?对不起,什么弹出窗口?包含电子邮件的区域,如图中所示,这似乎是一个全新的问题。如果你有关于ComboBox或节点布局的问题,请发一篇新帖子。那么ComboBox如何隐藏弹出窗口?对不起,什么弹出窗口?包含电子邮件的区域,如图所示,这似乎是一个全新的问题。如果您对组合框或节点布局有任何疑问,请发表新帖子。