Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SWT鼠标轮监听器_Java_Swt_Listener_Mouse_Mousewheel - Fatal编程技术网

Java SWT鼠标轮监听器

Java SWT鼠标轮监听器,java,swt,listener,mouse,mousewheel,Java,Swt,Listener,Mouse,Mousewheel,我已经对此做了一段时间的研究,发现关于SWT MouseWheelListeners的信息非常少。看看你们中是否有人遇到过这种情况,或者有什么可以帮助解释它们的链接 我试图了解SWT MouseWheelListener的相关信息以及如何正确使用它。我正在尝试使用MouseWheelListener在一个合成图上创建缩放效果,该合成图在其上绘制多个合成对象 从本质上讲,在向上旋转时,可以通过以两倍于正常大小的方式重新绘制画布、按比例布局在画布上重新绘制对象以及将焦点移动到旋转的点来放大 我的问题

我已经对此做了一段时间的研究,发现关于SWT MouseWheelListeners的信息非常少。看看你们中是否有人遇到过这种情况,或者有什么可以帮助解释它们的链接

我试图了解SWT MouseWheelListener的相关信息以及如何正确使用它。我正在尝试使用MouseWheelListener在一个合成图上创建缩放效果,该合成图在其上绘制多个合成对象

从本质上讲,在向上旋转时,可以通过以两倍于正常大小的方式重新绘制画布、按比例布局在画布上重新绘制对象以及将焦点移动到旋转的点来放大

我的问题如下: 是否可以在复合材料上使用MouseWheelListener,或者该侦听器仅适用于滚动复合材料之类的对象?我知道该方法存在;当我尝试在我的对象上滚动时没有发生任何事情,包括在调试时? 如果可能,如何在复合材料上启动鼠标滚轮事件? 如何区分车轮上升和车轮下降e计数为正表示上升,为负表示下降

代码如下:

public TagCloudComposite(Composite parent, int style) {
    super(parent, style);
    addMouseWheelListener(new MouseWheelListener() {
        public void mouseScrolled(MouseEvent e) {
            int count = e.count;
            System.out.println(count);
            // int direction = (Math.abs(count) > 0) ? UP : DOWN;
            // changeBackground(direction);
        }
    });
    this.setLayout(new FillLayout());
    this.setMinWeight(1);
    this.setMaxWeight(100);
    c = new Composite(this, SWT.NONE);
    this.setSize(300, 200);
}

是的,你说得对。这里的计数表示Windows中默认情况下的滚动行数3或-3是的,您是对的。这里的计数是指Windows中默认的滚动行数3或-3。可以在画布上使用MouseWheelListener;唯一的问题是事件只在具有焦点的组件上触发

画布通常不会获得焦点,除非您向其添加一个键侦听器,甚至是一个空侦听器


我知道这个问题已经很老了,但面对谷歌指示我的相同问题,这里有一个解决方案。

可以在画布上使用MouseWheelListener;唯一的问题是事件只在具有焦点的组件上触发

画布通常不会获得焦点,除非您向其添加一个键侦听器,甚至是一个空侦听器


我知道这个问题已经很老了,但面对谷歌指示我的相同问题,这里有一个解决方案。

hmmmm对我来说仍然没有真正的解决方案您的组件必须有焦点才能让MouseweellListener工作。有时,子组件具有焦点。嗯,我仍然没有真正的解决方案。您的组件必须具有焦点,MouseWheelListener才能工作。有时,子组件具有焦点。是的,我很早就发现了这一点。我相信我解决这个问题的方法是使用组合而不是画布,并将侦听器附加到顶级画布和子组合。然后在滚动时,采取适当的缩放动作重新绘制内容。虽然效率不高,但很有效。谢谢。那些想知道如何添加keyListener的人,下面是一个代码片段:公共类MouseweelDemo扩展了Canvas{addKeyListenermouseListener;类MapMouseListener实现了keyListener{@Override public void keyPressedKeyEvent e{//empty methods works}@Override public void keyReleasedKeyEvent e{//empty methods works}是的,我很早就发现了这一点。我相信我解决这一问题的方法是使用合成图而不是画布,并将侦听器附加到顶级画布和子合成图上。然后在滚动时,采取适当的缩放动作来重绘内容。虽然效率不高,但效果很好。谢谢。那些想知道如何添加keyListener,下面是一个代码片段:公共类MouseweelDemo扩展画布{addKeyListenermouseListener;类MapMouseListener实现keyListener{@Override public void keyPressedKeyEvent e{//empty methods works}@Override public void keyReleasedKeyEvent e{//空方法有效}令人遗憾的是,SWT文档描述了这个字段的完全不同的用途按钮被点击的次数,而没有记录这个按钮。令人遗憾的是,SWT文档描述了这个字段的完全不同的用途按钮被点击的次数,而没有记录这个按钮被点击的次数一点也不。