Чтобы получить лучшую помощь, вы должны отправить больше своего кода. Однако эта простая демонстрация работала отлично для меня (т. Е. Прокрутка по-прежнему работает после добавления 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);
}
}
но если добавить слушателя в JScrollPane - в свитке JScrollPane перестает работать. Мне нужно прокручивать, всегда работал. Мне нужно прокручивать работу, когда и где угодно. Может быть, есть способ получить событие без блокировки? – user1221483
У меня есть JTextArea внутри JScrollPane. (Фактический родитель JTextArea - это JViewPort, а родительский JViewPort - это JScrollPane.) Я добавляю MouseWheelListener к getParent() getTarAccess(), который является JScrollPane, и я получаю как прокрутки по умолчанию, так и мои пользовательские MouseWheelEvents. (Я использую mouseWheelEvent.isControlDown() для увеличения/уменьшения содержимого в JTextPane (путем увеличения или уменьшения размера шрифта) – djb