JEditorPane.addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent e) {
}
});
当我添加这些行时 - 在JEditorPane中滚动停止工作。怎么治愈呢?
答案 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处理。 JEditorPane包含一个滚动窗格,因此如果在JEditorPane上添加一个监听器,JScrollPane将停止接收事件。这就是你遇到问题的原因。最好是向JScrollPane添加一个监听器。