Чтение специальных кнопок мыши в 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");
});
Другие вопросы по тегам