2012-04-25 6 views
3

저는 desktoppane과 jscrollbar가있는 netbeans 플랫폼 (netbeans 모듈)에서 데스크탑 응용 프로그램을 개발 중입니다. 내가 MouseWheelListener를를 구현하는 클래스의 생성자에서마우스 휠 리스너가 jscrollbar에서 작동하지 않습니다.

scrollBar.addMouseWheelListener(this); 

을 추가했습니다.

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

내가 mosue 수 있도록 이제 어떻게해야 내가 마우스의 휠을 스크롤하고 때 위 SOUT의

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


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

OUPUT에 값을 얻고 있지만 지금은 스크롤 막대를 스크롤하지 않는 것입니다 jscrollbar의 휠 이벤트?

내가 검색 한하지만 난 스크롤 이벤트를 발견하지만 난 명시 적으로 스크롤을 찾고 있어요 ..

는 내가 추가 코드를 제거하고 표시된 것을 내가 다음 샘플 코드

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

내 실제 문제는 내가 마우스 휠 변화에 변화 스크롤 값을받지했지만 내가 다음과 같이 해결 한 그래서 마우스 휠 이벤트를 얻고 있었다이었다 .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()); 
    } 
}); 

생각합니다.

. 행 내에서 System.out.println 측 :-)

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

출력 (...)

아무 문제없이

EDIT

없음 :-)

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

@Hemant : mKorbel이 문제를 해결하기 위해 자체 SSCCE를 만들어야한다는 것을 유의하십시오. 다음 번에는 그에게 문제를 저장하고 질문에 작성하고 게시하십시오. 노력을 위해 mKorbel에 1+ 이상. –

2

setWheelScrollingEnabled(true/false)을 JScrollPane에 추가하려고했습니다.

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

매번 내가 측면 EVT을 휠 스크롤 :

+0

jscrollbar를 사용하고 있는데 jscrollpane이 아닙니다. 질문에 명시된 바와 같이 .. –

+0

Java Docs 이후로 직접적으로 'JScrollBar'를 직접 사용해 본 적이 없기 때문에 Ahha, 혼란 스럽습니다. , 항상'JScrollPane'을 사용하는 경향이 있습니다. 그리고 나서 그것을 통해'JScrollBar'의 동작이 변경됩니다. –