Dlaczego JScrollPane nie reaguje na zdarzenia kółka myszy?

mamJScrollPane zawierający panel zBoxLayout (OŚ STRON).

Moim problemem jest to, że JScrollPane nie reaguje na zdarzenia kółka myszy. Aby go przewinąć za pomocą kółka myszy, muszę być naJScrollBar.

znalazłem towątek i nie mamMouseMotionListener lubMouseWheelListener, tylko aMouseListener. Myślę, że mój problem wynika z faktu, że mójJScrollPane działać naJPanel który zawiera inne panele. Więc kiedy mysz znajduje się na panelu wewnątrzJScrollPane wydaje się, że zdarzenie jest zużywane przez ten panel, którego nigdy nie widziałem przez panel przewijania.

Czy jestpoprawny sposób, aby zdarzenia przechwycone przez dzieci panelu przewijania były widoczne dla tego panelu przewijania?

SSCCE:

Oto prosty przypadek testowy próbujący pokazać, kiedy próbuję zrobić w mojej aplikacji Swing.

Ramka:

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);
           }
        });
    }
}

ITestPanel definicja:

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);
   }
}

TheJTextArea wydaje się, że zużywa zdarzenie, ponieważ gdy kursor myszy jest w środku, przewijanie za pomocą koła nie działa. Muszę umieścić kursor myszy poza obszarem tekstu, aby działał ponownie.

questionAnswers(2)

yourAnswerToTheQuestion