2012-04-25 2 views
3

Я разрабатываю настольное приложение на платформе netbeans (модуль netbeans), в котором у меня есть desktoppane и панель jscrollbar. я реализованы MouseWheelListener и добавилпрослушиватель колесика мыши не работает в jscrollbar

scrollBar.addMouseWheelListener(this); 

в конструктор класса. теперь, когда я прокрутке колесика мыши это не прокрутки полосы прокрутки, хотя я получаю значения в

private void scrollBarMouseWheelMoved(java.awt.event.MouseWheelEvent evt) { 


System.out.println("mouse value is------------ " + evt.paramString()); 
} 

выводе из выше Sout является

mouse value is------------ MOUSE_WHEEL,(8,49),absolute(0,0),button=0,clickCount=0,scrollType=WHEEL_UNIT_SCROLL,scrollAmount=3,wheelRotation=1 

, что я должен сделать, чтобы включить mosue событие колеса на jscrollbar?

Я искал, но я нашел события для ScrollPane, но я ищу скроллинг явно ..

я удалил дополнительный код и показал, что я ищу в следующем примере коде

public final class ScrollableWindow1TopComponent extends TopComponent implements ComponentListener, MouseWheelListener { 

    private javax.swing.JScrollBar scrollBar; 
    private javax.swing.JDesktopPane scrollableGraphnewContainer; 

    public ScrollableWindow1TopComponent() { 
     this.addComponentListener(this); 
     scrollBar.addMouseWheelListener(this); 

    } 
    private void scrollBarMouseWheelMoved(java.awt.event.MouseWheelEvent evt) {           
     System.out.println("mouse value is------------ " + evt.paramString()); 
    } 
    private void scrollBarAdjustmentValueChanged(java.awt.event.AdjustmentEvent evt) { 
     //code that works fine 
    } 
    } 
+2

для лучшей помощи рано, пожалуйста, включают [sscce] (HTTP://www.sscce.org). – user1329572

+1

* «вот пример кода» * Для лучшей помощи скорее отправьте ** [SSCCE] (http://sscce.org/). ** –

+0

И, пожалуйста, позаботьтесь о том, чтобы правильно использовать имена классов J2SE. Я собирался отредактировать этот беспорядок, когда понял, что мое время будет лучше потрачено на помощь другим людям. –

ответ

1

моя актуальная проблема в том, что я не получаю значение прокрутки изменено на изменение колеса мыши, но я получаю событие колесика мыши, так что я решил следующим образом:

private void scrollBarMouseWheelMoved(java.awt.event.MouseWheelEvent evt) {           
     if (evt.getUnitsToScroll() > 0) { 
      scrollBar.setValue(scrollBar.getValue() + 1); 
     } else { 
      scrollBar.setValue(scrollBar.getValue() - 1); 
     } 
    }  

каждый раз, когда я колесо прокрутки вверх боковой EVT .getUnitsToScroll() дает положительное значение и вниз, что дает отрицательное значение, так что я инкрементируется значение скроллинга и остальные вещи автоматически обрабатываются

private void scrollBarAdjustmentValueChanged(java.awt.event.AdjustmentEvent evt) { 
    //my code... 
} 
7

Я думаю, что вы должны смотреть на AdjustmentListener, а не MouseXxxListener,

final JScrollBar scrollBar = myScrollpane.getVerticalScrollBar(); 
scrollBar.addAdjustmentListener(new AdjustmentListener() { 

    @Override 
    public void adjustmentValueChanged(AdjustmentEvent e) { 
     System.out.println("JScrollBar's current value = " + scrollBar.getValue()); 
    } 
}); 

.

.

EDIT

:-) нет, без какого-либо вопроса на моей стороне :-)

enter image description here

import java.awt.*; 
import java.awt.event.AdjustmentEvent; 
import java.awt.event.AdjustmentListener; 
import javax.swing.*; 

public class ListPanel extends JFrame { 

    private static final long serialVersionUID = 1L; 

    public ListPanel() { 
     setLayout(new GridLayout(0, 2, 10, 10)); 
     DefaultListModel model = new DefaultListModel(); 
     model.addElement(createButtons("one")); 
     model.addElement(createButtons("two")); 
     model.addElement(createButtons("three")); 
     model.addElement(createButtons("four")); 
     model.addElement(createButtons("five")); 
     model.addElement(createButtons("six")); 
     model.addElement(createButtons("seven")); 
     model.addElement(createButtons("eight")); 
     model.addElement(createButtons("nine")); 
     model.addElement(createButtons("ten")); 
     model.addElement(createButtons("eleven")); 
     model.addElement(createButtons("twelwe")); 
     JList list = new JList(model); 
     list.setCellRenderer(new PanelRenderer()); 
     JScrollPane scroll1 = new JScrollPane(list); 
     final JScrollBar scrollBar = scroll1.getVerticalScrollBar(); 
     scrollBar.addAdjustmentListener(new AdjustmentListener() { 

      @Override 
      public void adjustmentValueChanged(AdjustmentEvent e) { 
       System.out.println("JScrollBar's current value = " + scrollBar.getValue()); 
      } 
     }); 
     add(scroll1); 
     JScrollPane scroll2 = new JScrollPane(createPanel()); 
     add(scroll2);   
     final JScrollBar scrollBar1 = scroll2.getVerticalScrollBar(); 
     scrollBar1.addAdjustmentListener(new AdjustmentListener() { 

      @Override 
      public void adjustmentValueChanged(AdjustmentEvent e) { 
       System.out.println("JScrollBar's current value = " + scrollBar1.getValue()); 
      } 
     }); 

    } 

    public static JPanel createPanel() { 
     JPanel panel = new JPanel(); 
     panel.setLayout(new GridLayout(0, 1, 1, 1)); 
     panel.add(createButtons("one")); 
     panel.add(createButtons("two")); 
     panel.add(createButtons("three")); 
     panel.add(createButtons("four")); 
     panel.add(createButtons("five")); 
     panel.add(createButtons("six")); 
     panel.add(createButtons("seven")); 
     panel.add(createButtons("eight")); 
     panel.add(createButtons("nine")); 
     panel.add(createButtons("ten")); 
     panel.add(createButtons("eleven")); 
     panel.add(createButtons("twelwe")); 
     return panel; 
    } 

    public static JButton createButtons(String text) { 
     JButton button = new JButton(text); 
     return button; 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      public void run() { 
       ListPanel frame = new ListPanel(); 
       frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
       //frame.pack(); 
       frame.setSize(270, 200); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    class PanelRenderer implements ListCellRenderer { 

     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 
      JButton renderer = (JButton) value; 
      renderer.setBackground(isSelected ? Color.red : list.getBackground()); 
      return renderer; 
     } 
    } 
} 

выхода из System.out.println (...)

run: 
JScrollBar's current value = 0 
JScrollBar's current value = 0 
JScrollBar's current value = 1 
JScrollBar's current value = 2 
JScrollBar's current value = 3 
JScrollBar's current value = 4 
JScrollBar's current value = 5 
JScrollBar's current value = 6 
JScrollBar's current value = 7 
JScrollBar's current value = 8 
JScrollBar's current value = 9 
JScrollBar's current value = 10 
JScrollBar's current value = 11 
JScrollBar's current value = 12 
JScrollBar's current value = 13 
JScrollBar's current value = 14 
JScrollBar's current value = 15 
JScrollBar's current value = 78 
JScrollBar's current value = 143 
JScrollBar's current value = 78 
JScrollBar's current value = 0 
JScrollBar's current value = 78 
JScrollBar's current value = 143 
BUILD SUCCESSFUL (total time: 10 seconds) 
+0

спасибо mkorbel Я пробовал это, но он не печатает System.out.println («Текущее значение JScrollBar = = + scrollBar.GetValue()); –

+0

@Hemant Metalia см. Мое редактирование здесь – mKorbel

+0

@ Gemant: обратите внимание, что mKorbel должен был создать свой собственный SSCCE, чтобы попытаться решить вашу проблему. В следующий раз, пожалуйста, сохраните его, создайте и опубликуйте его в своем вопросе. 1+ к mKorbel для усилий. –

2

Вы попробовали добавить setWheelScrollingEnabled(true/false) на свой JScrollPane.

+0

Я использую jscrollbar, а не jscrollpane, как я сказал в вопросе. –

+0

Ahha, это часть замешательства, так как я никогда не работал непосредственно на 'JScrollBar', поскольку Java Docs , всегда более склонный к использованию 'JScrollPane', а затем через него изменяют поведение' JScrollBar'. –

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