MouseWheelListener块滚动

时间:2012-03-24 21:51:57

标签: java scroll block jeditorpane

    JEditorPane.addMouseWheelListener(new MouseWheelListener() {
        public void mouseWheelMoved(MouseWheelEvent e) {
        }
    });

当我添加这些行时 - 在JEditorPane中滚动停止工作。怎么治愈呢?

2 个答案:

答案 0 :(得分:2)

您应该发布更多代码以获得更好的帮助。但是,这个简单的演示对我来说很好(即在MouseWheelListener添加JScrollPane后滚动仍然有用。)

import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;

public class Frame
{
    public static void main( String[] args )
    {
        JFrame frame = new JFrame( );
        JEditorPane pane = new JEditorPane( );

        String t = "";
        for ( int i = 0 ; i < 10000 ; i++ ) t += "t";

        pane.setText( t );

        JScrollPane scroll = new JScrollPane( pane );

        scroll.addMouseWheelListener( new MouseWheelListener( )
        {
            @Override
            public void mouseWheelMoved( MouseWheelEvent e )
            {
                System.out.println( "Scroll" );
            }
        });

        frame.add( scroll );
        frame.setSize( 400, 400 );
        frame.setVisible( true );
    }
}

答案 1 :(得分:1)

您可以阅读有关如何在Javadoc中调度MouseWheelEvents的信息:http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/MouseWheelEvent.html

简而言之,事件在光标和摆动下传递到最顶层组件,在大多数情况下,鼠标滚轮事件由JScrollPane处理。 JEdi​​torPane包含一个滚动窗格,因此如果在JEditorPane上添加一个监听器,JScrollPane将停止接收事件。这就是你遇到问题的原因。最好是向JScrollPane添加一个监听器。