2013-03-08 2 views
1

Как задано здесь Scrolling part of the canvas Я не могу слушать события мыши на полосах прокрутки. После расследования я обнаружил, что это связано с ошибкой в ​​GTK. См. Здесь https://bugs.eclipse.org/bugs/show_bug.cgi?id=51995. Он исправлен, но я не знаю, как его решить на моей машине (Ubuntu 12.04). Может ли кто-нибудь помочь мне в этом отношении?SWT Прокрутка событий на Linux

ответ

0

Вы можете обнаружить события мыши на полосе прокрутки или слайдере, как указано ниже.

Установите значения приращения страницы и значения приращения для ползунка или полосы прокрутки.

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

Примечание ПОСЛЕ клиента изменить размер страницы обновления приращения и приращения значений.

0

Либо получить источник, применить патч или построить из git через ваше хранилище пакетов распределения (что в вашем случае будет боль, debian упаковка требует, чтобы вы прыгали через пучок циклов) или найти PPA (читайте: найти кого-нибудь еще, кто уже сделал эту работу) и установить его (сделайте это на свой страх и риск)

Смежные вопросы