JEditorPane.addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent e) {
}
});
當我添加這些行 - 在JEditorPane滾動停止工作。如何治癒?MouseWheelListener塊滾動
JEditorPane.addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent e) {
}
});
當我添加這些行 - 在JEditorPane滾動停止工作。如何治癒?MouseWheelListener塊滾動
您應該發佈更多代碼以獲得更好的幫助。不過,這個簡單的演示對我來說工作得很好(即在將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);
}
}
你可以閱讀有關MouseWheelEvents如何在Javadoc中出動:http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/MouseWheelEvent.html
總之,事件在光標和擺動傳遞到最上面的部分,在大多數情況下,鼠標滾輪事件由JScrollPane的處理。 JEditorPane包含一個滾動面板,所以如果你在JEditorPane上添加一個監聽器,JScrollPane將停止接收事件。這就是爲什麼你有這個問題。相反,最好將監聽器添加到JScrollPane。
但是,如果將偵聽器添加到JScrollPane - JScrollPane滾動停止工作。我需要滾動始終工作。我需要滾動工作無論何時何地。也許有一種方法可以讓事件不受阻塞? – user1221483 2012-03-24 22:08:22
我有一個JScrollPane內的JTextArea。 (JTextArea的實際父代是JViewPort,JViewPort的父代是JScrollPane。)我將一個MouseWheelListener添加到JTextArea的getParent()。getParent(),它是JScrollPane,我同時獲得默認的滾動操作和我自定義的MouseWheelEvents。 (我使用mouseWheelEvent.isControlDown()放大/縮小JTextPane中的內容(通過增加或減小字體大小) – djb 2016-02-17 04:30:53