java - 读取特殊鼠标按钮

标签 java javafx mouseevent mouse-buttons

我有兴趣捕获来自资源管理器鼠标按钮的输入(鼠标侧面的特殊按钮通常用于在网络浏览器上前进和后退)。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.scene.input.MouseButton;
import static java.lang.System.*;

public class MouseThing extends Application
{
    @Override
    public void start(Stage stage) throws Exception
    {
        Pane pane = new Pane();

        pane.setOnMousePressed(e -> {
            if(e.getButton() == MouseButton.PRIMARY)
                out.println("LEFT"); 
            if(e.getButton() == MouseButton.SECONDARY)
                out.println("RIGHT");      
            if(e.getButton() == MouseButton.MIDDLE)
                out.println("MIDDLE");    
            if(e.getButton() == MouseButton.NONE)
                out.println("OTHER");  
            // How read explorer buttons?  
            out.println("click");
        });

        Scene scene = new Scene(pane, 300, 100);
        stage.setTitle("Demo");
        stage.setScene(scene);
        stage.show();
    }
}

仅举个例子,我想记录一下前进和后退按钮被激活。此时我可以实现的唯一交互是左键、右键和中键单击。按鼠标上的前进后退按钮甚至不会注册点击打印。

有一篇关于 Javascript 的文章:JS special mouse buttons ,但它对我的目的没有用。

最佳答案

自 JavaFX 12 起,forwardback鼠标上的按钮已被识别,因此您可以执行以下操作:

pane.setOnMousePressed(e -> {
    if(e.getButton() == MouseButton.PRIMARY)
        out.println("LEFT");
    if(e.getButton() == MouseButton.SECONDARY)
        out.println("RIGHT");
    if(e.getButton() == MouseButton.MIDDLE)
        out.println("MIDDLE");
    if(e.getButton() == MouseButton.BACK)
        out.println("BACK");
    if(e.getButton() == MouseButton.FORWARD)
        out.println("FORWARD");
    if(e.getButton() == MouseButton.NONE)
        out.println("NONE");  
    out.println("click");
});

关于java - 读取特殊鼠标按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47701036/

相关文章:

javafx - javafx 中的上标和下标

javascript - 谷歌地图双击事件传播

java - 日期格式 日/月/年

java - 在java中使用多个分割参数分割字符串

java - 在未排序的 xml 文件中查找特定值

java - 更改 Runtime.getRuntime().exec 进程上的进程组

java - 如何不对文件路径进行硬编码

javafx - setWrapText(true) 不适用于 JavaFX 中的 Label

javascript - 按下鼠标按钮时监视鼠标坐标

javascript - 在JQuery中获取被点击的元素