我有兴趣从资源管理器鼠标按钮(通常用于在Web浏览器上前进和后退的鼠标侧面的特殊按钮)捕获输入。
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();
}
}
仅举例来说,我想记录前进和后退按钮被激活。此时我唯一可以实现的互动是左,右和中间点击。按鼠标上的forward
和back
按钮甚至无法注册click
打印件。
这篇帖子适用于Javascript:JS special mouse buttons ,但它对我的目的没有用。
答案 0 :(得分:0)
自从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");
});