Předmět Autor Datum
Narychlo: import java.awt.*; import javafx.application.Application; import javafx.scene.Scene; impo…
MaSo 08.03.2018 13:02
MaSo
Díky, funguje to, mám fullscreen, takže všude, ale to zmiňované pohnutí a vrácení zpět je dost nechu…
MichalDM 08.03.2018 14:22
MichalDM
Nenapada mě jak. O pohyb myši se stará operační systém, takže tohle je vlastně takový malý hack. Mů…
MaSo 08.03.2018 14:33
MaSo
Kurzor jde zneviditelnit pomocí setCursor(javafx.scene.Cursor.NONE); Avšak na chování to nemá žádn…
MichalDM 08.03.2018 14:56
MichalDM
...ale dost mě překvapuje, že je možné rychlým pohybem posunout kurzor o několik cm. To je proto, z…
MaSo 09.03.2018 09:03
MaSo
A jak tu akceleraci vypnu nebo alespoň snížím.
MichalDM 09.03.2018 09:27
MichalDM
Jak to udělat programově z Javy vubec netuším...
MaSo 09.03.2018 09:33
MaSo
A co pomocí externí knihovny?
MichalDM 09.03.2018 09:34
MichalDM
To je snad to samé. Pořád to bude programově z Javy. Nevím...
MaSo 09.03.2018 09:36
MaSo
Zvýšit citlivost asi nepůjde, ale teď mě napadlo, že by bylo lepší, kdyby se kurzor pohyboval, ale n…
MichalDM 08.03.2018 20:45
MichalDM
Tenhle návod funguje, ale ne na 100% a v mém případě je nevhodný, použiji proto něco jiného. 274789…
MichalDM 08.03.2018 23:18
MichalDM
Kód dělá, co má, ale myší lze v závislosti rychlosti pohybu a citlivosti posunout o značný kus, než…
MichalDM 14.03.2018 18:44
MichalDM
Samotná požiadavka na dočasné zastavenie kurzora je úplný nezmysel. Ak hýbanie myši v nejakom "kriti… poslední
los 15.03.2018 16:55
los

Narychlo:

import java.awt.*;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {

        try {
            Pane root = new Pane();
            PointerInfo a = MouseInfo.getPointerInfo();
            Point b = a.getLocation();
            int x = (int) b.getX();
            int y = (int) b.getY();

            root.addEventFilter(MouseEvent.MOUSE_MOVED, e -> {
                try {
                    Robot robot = new Robot();
                    robot.mouseMove(x, y);
                } catch (AWTException e1) {
                    e1.printStackTrace();
                }
            });

            Scene scene = new Scene(root, 800, 400);
            primaryStage.setScene(scene);
            primaryStage.show();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Bude to fungovat jen v okne te applikace a bude nekdy videt, jak se kurzor pohne a vrati zpet...:-)

Díky, funguje to, mám fullscreen, takže všude, ale to zmiňované pohnutí a vrácení zpět je dost nechutné.

Už při středně rychlém pohybu jde jasně patrné. A při rychlém pohybu se posune i o několik cm.

Nepotřebuji, aby to nedělalo vůbec, ale chtělo by, prosím Vás, nějak vylepšit, aby to nedělalo tak moc.

Díky

Kurzor jde zneviditelnit pomocí

setCursor(javafx.scene.Cursor.NONE);

Avšak na chování to nemá žádný efekt. Objekty po najetí myší reagují, i když není vidět.

Ale, jak jsem napsal do nadpisu, jedná se pouze o dočasné "zamrznutí", nechci totiž, aby se s kurzorem hýbalo v kritickém okamžiku, kdy to způsobuje problémy. Takže zneviditelňovat je v tomhle případě nevhodné.

Chtělo by to spíš nějak zvýšit citlivost detekce pohybu. Nevím teda, jak to přesně funguje, ale dost mě překvapuje, že je možné rychlým pohybem posunout kurzor o několik cm.

Nebo třeba změnit nastavení v OS.

Samotná požiadavka na dočasné zastavenie kurzora je úplný nezmysel. Ak hýbanie myši v nejakom "kritickom okamžiku" spôsobuje nejaký problém, tak správne riešenie je opraviť príčinu toho problému, a nie privyrábanie si nových problémov rôznymi kreatívnymi hackmi.

Zpět do poradny Odpovědět na původní otázku Nahoru