2012-04-25 6 views
3

私はデスクトップと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 

iがmosueを有効にするために、今何をすべき私は、マウスのホイールをスクロールしていたとき、私は上記のSOUTの

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


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

出力に含まの値を取得していますけれども、今では、スクロールバーをスクロールしていないです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

@ヘマン:あなたの問題を解決するためにmKorbelが自分のSSCCEを作成しなければならなかったことに注意してください。次回は、彼にトラブルを保存し、あなたの質問に作成して投稿してください。努力のためにmKorbelに1+ –

2

あなたのJScrollPaneにsetWheelScrollingEnabled(true/false)を追加しようとしましたか?

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

毎回iはサイドEVTをアップスクロールホイール:

+0

私は質問に記載されているようにjscrollbarではなくjscrollbarを使用しています。 –

+0

Ahha、それは混乱の部分です.JavaScripts 'JScrollPane'を使う方が常に傾いていて、それを通って' JScrollBar'の動作が変更されます。 –

関連する問題