我一直反对在几个Java应用程序的Java Swing +我的Wacom Graphire平板几年的一个问题跑起来现在已经遇到了它在我自己的。

我用手写板来解决的手腕问题,同时点击鼠标,它在Windows下正常工作,当我使用的Java应用程序除外。在Java应用程序中,笔的单点击无法正常工作。 (通常情况下,问题只发生与文件选择对话框或树控件。)数位板还带有一个无线鼠标具有相同片剂的工作原理,和其单点击不正常工作。

我不知道这个问题是否在WACOM驱动程序或在Windows或两者的Java Swing运行。有没有人遇到过吗?我想文件,WACOM一个bug报告,但我不知道该怎么告诉他们。

我已经能够重现这在我自己的应用程序,它具有与我添加了一个HyperlinkListener到HTML文档创建一个JEditorPane。我得到的每一个点击鼠标HyperlinkEvent.ACTIVATED事件,但我没有得到在每一次点击用笔HyperlinkEvent.ACTIVATED事件。

笔和鼠标之间的一个很大的区别是,当你点击鼠标按钮,它真的很容易造成不移动鼠标按键点击。在数位板这是很难做到这一点,和似乎缺乏HyperlinkEvent.ACTIVATED事件的关联 - 如果我很小心,不要移动笔位置,当我点击平板电脑,我想我可以得到激活事件

任何建议,可以尝试这样我就可以给WACOM这个错误一些有用的信息?这真是令人沮丧的不能用我的笔与Java应用程序,特别是因为笔正常工作与“普通”的Windows(非Java)应用程序。

通常我不会在这里问这个问题,但我想从程序员的的角度来看可能什么,所以我可以提交一个好的bug报告找出来。

有帮助吗?

解决方案

你应该做的就是添加一个mouseListener,看看当它注册一个mouseClicked()mousePressed()mouseReleased()事件。我不知道如果摆动读取手写笔作为鼠标虽然。然而,它应该给你一些洞察到什么实际事情。

其他提示

我试过dr.manhattan的建议,它就像一个魅力。我的mousePressed获取/正常事件的mouseReleased;事件的mouseClicked用手写板鼠标总是发生,但除非的mouseClicked我设法保持笔非常安静事件不会用笔发生。即使是1个像素的运动也足以让它失败。我想我应该责怪Java的这一个:有没有办法来指定“点击半径”为acceptible运动

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);
    }
}

我想你已经得到了自己的答案:移动笔会导致其他一些事件不是简单的点击,也许也许拖放像事件。 我不知道它是否是一个Java / Swing或一个Wacom的问题,它可能是平板电脑没有注册的点击本身,而是为拖动的事件,或者它可能是摆解释事件不当。

我报这个错误多年前太阳它仍然是不固定的。任何像样的UI框架将允许按下和释放之间的一些运动来产生一个点击事件。 1个像素的高dpi的显示器上的最大运动仅仅是荒谬。它不仅是与Wacom数位板,即老年人也有苦衷,保持鼠标仍然点击时的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top