문제

나는 여러 Java 응용 프로그램에서 몇 년 동안 Java Swing + My Wacom Graphire 태블릿의 문제에 반대했으며 이제 내 자신의 직접 만났습니다.

펜 태블릿을 사용하여 마우스를 클릭하는 동안 손목 문제를 해결하고 Java 응용 프로그램을 사용할 때를 제외하고는 창에서 잘 작동합니다. Java 응용 프로그램에서는 펜의 단일 클릭이 올바르게 작동하지 않습니다. (일반적으로 문제는 파일 선택 대화 상자 또는 트리 컨트롤에서만 발생합니다.) 펜 태블릿에는 동일한 태블릿과 함께 작동하는 무선 마우스와 함께 제공되며 단일 클릭은 올바르게 작동합니다.

문제가 Wacom 드라이버 또는 Windows의 Java Swing 런타임에 있는지 여부는 모르겠습니다. 전에 이것을 만난 사람이 있습니까? Wacom에 버그 보고서를 제출하고 싶지만 무엇을 말해야할지 모르겠습니다.

HyperLinkListener를 추가 한 HTML 문서가 포함 된 Jeditorpane이있는 내 응용 프로그램에서 이것을 재현 할 수있었습니다. 마우스를 클릭 할 때마다 hyperlinkevent.activated 이벤트가 발생하지만 펜을 클릭 할 때마다 hyperlinkevent.activated 이벤트를 얻지 못합니다.

펜과 마우스의 큰 차이점 중 하나는 마우스의 버튼을 클릭하면 마우스 움직임없이 버튼 클릭을 일으킬 수 있다는 것입니다. 펜 태블릿에서는 이것을하기가 매우 어렵고, 이는 hyperlinkevent의 부족과 관련이있는 것 같습니다. 이벤트.

이 버그에 대한 좋은 정보를 Wacom에게 줄 수 있도록 시도해야 할 제안에 대한 제안이 있습니까? 특히 펜이 "일반"Windows (비 자바) 응용 프로그램에서 잘 작동하기 때문에 Java 앱과 함께 펜을 사용할 수 없다는 것은 정말 실망 스럽습니다.

일반적으로 나는 여기서이 질문을하지 않을 것이지만 나는 프로그래머 좋은 버그 보고서를 제출할 수 있도록 무슨 일이 일어나고 있는지 관점.

도움이 되었습니까?

해결책

당신이해야 할 일은 a를 추가하는 것입니다 mouseListener 등록시기를 확인하십시오 mouseClicked(), mousePressed(), mouseReleased() 이벤트. 스윙이 태블릿 펜을 마우스로 읽는지 확실하지 않습니다. 그러나 실제로 무슨 일이 일어나고 있는지에 대한 통찰력을 제공해야합니다.

다른 팁

나는 Manhattan 박사의 제안을 시도했고 그것은 매력처럼 작동합니다. 나는 Mousepressed/MouserEleled 이벤트를 올바르게 얻습니다. 펜 태블릿 마우스와 함께 항상 명확한 이벤트가 발생하지만, 펜을 매우 많이 유지하지 않으면 펜에서는 끔찍한 이벤트가 발생하지 않습니다. 1 픽셀 운동조차도 실패하기에 충분합니다. 나는 이것에 대해 Java를 비난해야한다고 생각합니다. 허용 가능한 움직임을 위해 "클릭 반경"을 지정할 방법이 없습니다.

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 프레임 워크는 프레스와 릴리스 사이의 이동을 허용하여 클릭 이벤트를 생성 할 수 있습니다. 높은 DPI 디스플레이에서 1 픽셀의 최대 이동은 말도 안됩니다. Wacom 정제의 문제 일뿐 만 아니라, 나이든 사람들은 클릭 할 때 마우스를 계속 유지하기가 어려워집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top