Чтение специальных кнопок мыши в Java (FX) / мышь Mouse
Я заинтересован в захвате ввода с помощью кнопок мыши в проводнике (специальные кнопки на боковой панели мыши обычно используются для перемещения вперед и назад в веб-браузерах).
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, но он не был полезен для моих целей.
0 ответов
Начиная с JavaFX 12, кнопки мыши " вперед" и " назад" распознаются, поэтому вы можете:
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");
});