1

正如这里所问的滚动画布的一部分,我无法在滚动条上监听鼠标事件。经过调查,我发现这是由于 GTK 中的一个错误。请参阅此处https://bugs.eclipse.org/bugs/show_bug.cgi?id=51995。它现在已修复,但我不知道如何在我的机器上解决它(Ubuntu 12.04)。任何机构都可以在这方面帮助我吗?

4

2 回答 2

0

要么获取源代码,应用补丁,要么通过你的分发包构建从 git 构建(在你的情况下这将是一个痛苦,debian 打包需要你跳过一堆循环)或找到一个 PPA(阅读:找到其他人是否已经工作)并安装它(这样做需要您自担风险)

于 2013-03-08T12:33:11.547 回答
0

您可以检测滚动条或滑块上的鼠标事件,如下所述。

将页面增量和增量值设置为 Slider 或 Scrollbar。

sbr.setPageIncrement(100); //当点击拇指和左箭头按钮之间的区域或拇指和右箭头按钮之间的区域时,滚动条将前后移动100像素。

sbr.setIncrement(10); //当点击左右箭头按钮时,滚动条将前后移动 10 个像素。

在滚动条或滑块选择侦听器中添加以下代码

sbr.addListener(SWT.Selection, new Listener() {
  @Override
  public void handleEvent(Event event) {
      int hSelection = sbr.getSelection();

      if (hSelection - prevHselection == sbr.getIncrement()) {
         System.out.println("clicked right arrow button");
      } else if (hSelection - prevHselection == -sbr.getIncrement()) {
         System.out.println("clicked left arrow button");
      } else if (hSelection - prevHselection == sbr.getPageIncrement()) {
         System.out.println("clicked on area between thumb and right arrow button");              
      } else if (hSelection - prevHselection == -sbr.getPageIncrement()) 
         System.out.println("clicked on area between thumb and left arrow button");   
      } else if(hSelection - prevHselection > 0){
         System.out.println("Thumb is dragged forward");                 
      } else if(hSelection - prevHselection < 0){
         System.out.println("Thumb is dragged backward");                 
      }

      prevHselection = hSelection; //create field prevSelection
  }
}

注意客户端调整大小后更新页面增量和增量值。

于 2013-08-01T07:41:50.973 回答