У меня есть JScrollPane, содержащий панель с BoxLayout (PAGE AXIS).
Моя проблема в том, что JScrollPane не реагирует на события колесика мыши. Чтобы сделать это прокруткой с помощью колеса мыши, я должен быть на JScrollBar.
Я нашел этот поток, и у меня нет MouseMotionListener или MouseWheelListener, только a MouseListener. Я думаю, что моя проблема связана с тем, что мой JScrollPane действует на JPanel, который содержит другие панели. Поэтому, когда мышь находится на панели в JScrollPane, кажется, что событие используется этой панелью, которую я никогда не видел на панели прокрутки.
Есть ли правильный способ сделать события, пойманные дочерними элементами панели прокрутки, видимыми для этой панели прокрутки?
SSCCE:
 
Вот простой тестовый пример, который пытается показать, когда я пытаюсь сделать это в своем приложении Swing.
Кадр:
public class NewJFrame extends javax.swing.JFrame {
    public NewJFrame() {
        initComponents();
        for (int i = 0; i < 50; i++) {
            jPanel1.add(new TestPanel());
        }
    }
private void initComponents() {
        jScrollPane1 = new javax.swing.JScrollPane();
        jPanel1 = new javax.swing.JPanel();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1,    javax.swing.BoxLayout.PAGE_AXIS));
        jScrollPane1.setViewportView(jPanel1);
        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
        pack();
    }
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
           @Override
            public void run() {
                new NewJFrame().setVisible(true);
           }
        });
    }
}
И определение TestPanel:
public class TestPanel extends javax.swing.JPanel {
    public TestPanel() {
        initComponents();
    }
    private void initComponents() {
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jLabel1.setText("jLabel1");
        setBackground(new java.awt.Color(255, 51, 51));
        setLayout(new java.awt.BorderLayout());
        jLabel2.setText("TEST LABEL");
        jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        add(jLabel2, java.awt.BorderLayout.PAGE_START);
        jTextArea1.setEditable(false);
        jTextArea1.setColumns(20);
        jTextArea1.setRows(5);
        jTextArea1.setFocusable(false);
        jScrollPane1.setViewportView(jTextArea1);
        add(jScrollPane1, java.awt.BorderLayout.CENTER);
   }
}
Кажется, что JTextArea потребляет событие, так как, когда курсор находится внутри него, прокрутка с использованием колеса не работает. Я должен поместить курсор мыши за пределы области текста, чтобы он снова работал.
