我有兴趣捕获来自资源管理器鼠标按钮的输入(鼠标侧面的特殊按钮通常用于在网络浏览器上前进和后退)。
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 起,forward和 back鼠标上的按钮已被识别,因此您可以执行以下操作:
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/