Frage

Ich habe vor einem Problem mit Java Swing laufe bis + mein Wacom Graphire-Tablett für ein paar Jahre in mehreren Java-Anwendungen und habe es jetzt in meinem eigenen begegnet.

Ich benutze ein Stifttablett um Handgelenk Probleme zu bekommen, während eine Maus zu klicken, und es funktioniert gut unter Windows außer wenn ich Java-Anwendungen bin mit. In Java-Anwendungen, wird der Ein-Klick des Stiftes nicht korrekt funktionieren. (In der Regel tritt das Problem nur mit Dateiauswahl-Dialogfeldern oder Baumstrukturen). Das Stifttablett kommt auch mit einer drahtlosen Maus, die mit der gleichen Tablette arbeitet, und sein Single-Klick richtig funktioniert.

Ich weiß nicht, ob das Problem in den WACOM-Treiber oder in dem Java-Swing-Runtime für Windows oder beides. Hat jemand dies zuvor begegnet? Ich möchte einen Bug-Report mit WACOM Datei, aber ich habe keine Ahnung, was sie sagen.

ich in der Lage gewesen, dies in meiner eigenen Anwendung zu reproduzieren, die eine JEditorPane mit einem HTML-Dokument hat, dass ich einen HyperlinkListener zu hinzugefügt habe. Ich erhalte HyperlinkEvent.ACTIVATED Ereignisse auf jedem einzelnen Klick mit der Maus, aber ich habe nicht HyperlinkEvent.ACTIVATED Ereignisse auf jedem einzelnen Klick mit dem Stift.

Ein großer Unterschied zwischen einem Stift und einer Maus ist, dass, wenn Sie eine Taste auf einer Maus klicken, es ist wirklich einfach auf den Button-Klick ohne Mausbewegung zu verursachen. Auf dem Stifttablett ist es sehr schwer, dies zu tun, und das scheint mit dem Mangel an HyperlinkEvent.ACTIVATED Ereignisse zu korrelieren - wenn ich sehr vorsichtig bin nicht die Stiftposition zu bewegen, wenn ich die Tablette klopfen, ich denke, ich kann aktiviert werden Veranstaltungen.

Irgendwelche Vorschläge für Dinge versuchen, damit ich WACOM auf diesen Fehler einige gute Informationen geben? Es ist wirklich frustrierend, nicht in der Lage sein, meine Feder mit Java-Anwendungen zu verwenden, vor allem, da der Stift mit „normalen“ Windows (Nicht-Java) Anwendungen gut funktioniert.

Normalerweise würde ich nicht diese Frage stellen hier, aber ich möchte von einem Programmierer, um herauszufinden, Standpunkt, was man vor sich gehen, damit ich einen guten Fehlerbericht.

War es hilfreich?

Lösung

Was Sie tun sollen, ist ein mouseListener hinzufügen und sehen, wenn es ein mouseClicked(), mousePressed() registriert, mouseReleased() Ereignis. Ich bin mir nicht sicher, ob die Schaukel obwohl die Tablet-Stift als Maus liest. Jedoch sollte es Ihnen einen Einblick in das, was eigentlich los ist.

Andere Tipps

Ich habe versucht dr.manhattan Vorschlag und es wirkt wie ein Zauber. Ich erhalte mouse / mouse Ereignisse korrekt; mouseClicked Ereignisse passieren immer mit dem Stifttablett Maus, aber mouseClicked Ereignisse mit dem Stift nicht passieren, wenn ich den Stift sehr ruhig zu halten verwalten. Selbst eine 1-Pixel-Bewegung ist genug, um es nicht zu machen. Ich glaube, ich Java für diese eine Schuld sollte: Es gibt keine Möglichkeit, einen „Klick Radius“ für acceptible Bewegung angeben

.
package com.example.bugs;

import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;

public class WacomMouseClickBug {
    public static void main(String[] args) {
        JFrame jframe = new JFrame();

        jframe.addMouseListener(new MouseListener(){
            @Override public void mouseClicked(MouseEvent event) {
                System.out.println("mouseClicked: "+event);
            }
            @Override public void mouseEntered(MouseEvent event) {}
            @Override public void mouseExited(MouseEvent event) {}
            @Override public void mousePressed(MouseEvent event) {
                System.out.println("mousePressed: "+event);
            }
            @Override public void mouseReleased(MouseEvent event) {
                System.out.println("mouseReleased: "+event);                
            }           
        });

        jframe.setPreferredSize(new Dimension(400,400));        
        jframe.pack();
        jframe.setLocationRelativeTo(null);
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jframe.setVisible(true);
    }
}

Ich glaube, du hast schon die Antwort selbst: den Stift Ergebnisse in einem anderen Fall als ein einfacher Klick bewegen, vielleicht vielleicht ein Drag-and-Drop wie Ereignis. Ich bin nicht sicher, ob es ein Java / Swing oder ein Wacom Problem, könnte es sein, dass die Tablette nicht die Klicks als solche nicht registrieren, sondern als Drag Ereignisse, oder es könnte, dass Swing sein, die Ereignisse falsch interpretiert.

berichten ich diesen Fehler schon vor vielen Jahren an Sun Es ist noch nicht festgelegt. Jeder anständiger UI-Framework ermöglicht eine gewisse Bewegung zwischen einer Presse und Freigabe, um ein Click-Ereignis zu generieren. Eine maximale Bewegung von 1 Pixel auf einer hohen DPI-Anzeige ist nur lächerlich. Es ist nicht nur ein Problem mit wacom Tabletten, dh ältere Menschen auch Schwierigkeiten haben, um die Maus immer noch zu halten, wenn klicken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top