首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java JFXPanel: eventHandler返回按住按钮而不是按下按钮

Java JFXPanel是JavaFX中的一个组件,用于在Swing应用程序中嵌入JavaFX内容。它提供了一个可以显示JavaFX场景图形的面板,并且可以与Swing组件进行交互。

在JavaFX中,可以使用事件处理器(event handler)来响应用户的交互操作。对于按钮(Button)组件,通常会使用按钮的事件处理器来捕获按钮的按下事件。然而,有时候我们可能需要获取用户按住按钮的事件,而不仅仅是按下按钮的事件。

要实现按住按钮的事件处理,可以使用JavaFX中的鼠标事件(MouseEvent)和键盘事件(KeyEvent)。通过监听鼠标按下和释放事件,以及键盘按下和释放事件,可以判断用户是否按住了按钮。

以下是一个示例代码,演示如何实现按住按钮的事件处理:

代码语言:txt
复制
import javafx.application.Application;
import javafx.embed.swing.JFXPanel;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import javax.swing.*;

public class Main extends JFrame {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFXPanel jfxPanel = new JFXPanel();
            Main main = new Main();
            main.add(jfxPanel);
            main.setSize(300, 200);
            main.setVisible(true);

            Platform.runLater(() -> {
                initFX(jfxPanel);
            });
        });
    }

    private static void initFX(JFXPanel jfxPanel) {
        Button button = new Button("按住我");
        button.setOnMousePressed(event -> {
            System.out.println("按住按钮");
        });
        button.setOnMouseReleased(event -> {
            System.out.println("释放按钮");
        });

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

        Scene scene = new Scene(root, 300, 200);
        jfxPanel.setScene(scene);
    }
}

在上述代码中,我们创建了一个JavaFX的场景(Scene),并将一个按钮添加到场景中。通过设置按钮的鼠标按下事件处理器(setOnMousePressed)和鼠标释放事件处理器(setOnMouseReleased),我们可以在按住按钮和释放按钮时分别输出相应的信息。

这样,当用户按住按钮时,会输出"按住按钮";当用户释放按钮时,会输出"释放按钮"。

需要注意的是,上述示例代码是在Swing应用程序中使用JavaFX的方式,因此使用了JFXPanel来嵌入JavaFX内容。如果是纯JavaFX应用程序,可以直接在JavaFX的主类中实现相应的事件处理。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云云数据库MySQL。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券