Почему на JScrollPane не добавляется объект моего класса?

У меня есть класс GUI В который я добавляю разные компоненты (панели с кнопками, слайдерами и т.д.). И есть класс graphicsArea наследник JPanel в котором я переопределил метод paintComponent(Graphics g);

Когда я добавляю объект этого класса на панель JPanel graphicsPanelв конструкторе класса GUI

    graphicsArea = new GraphicsArea();
    graphicsArea.setVisible( false );

    graphicsPanel = new JPanel(new BorderLayout());
    graphicsPanel.add(graphicsArea);

    setLayout( new BorderLayout() );
    add( menuPanel,BorderLayout.WEST );
    add(graphicsPanel);

И обрабатываю событие нажатия на кнопку, чтобы панель с графиком появилась

     @Override
    public void actionPerformed( ActionEvent e ){
        DefaultTableModel model = (DefaultTableModel) dataTable.getModel();
        for(int i =0; i<model.getRowCount(); i++ ) {
            Double valueOfX = Double.parseDouble(model.getValueAt(i, 0).toString());
            //valueOfX = valueOfX*(graphicsArea.getWidth()/gridSlider.getValue());
            Double valueOfY = Double.parseDouble(model.getValueAt(i, 1).toString());

            //valueOfY = valueOfY*(graphicsArea.getHeight()/gridSlider.getValue());
            pointList.add(new Ellipse2D.Double(valueOfX, valueOfY, 5, 5));
        }





        graphicsArea.setVisible(!graphicsArea.isVisible());
        SwingUtilities.updateComponentTreeUI(GUI.this);
        graphicsArea.paintComponent(GUI.this.getGraphics());


    }

То панель появляется.

введите сюда описание изображения

Теперь я хочу добавить эту панель на JScrollPane, чтобы иметь возможность прокручивать область графика. Для этого, в классе GUI заменил приведенный код на

graphicsArea = new GraphicsArea();
    graphicsArea.setVisible( false );

    graphicsPanel = new JPanel(new BorderLayout());
    graphicsPanel.add(graphicsArea);

    setLayout( new BorderLayout() );
    add( menuPanel,BorderLayout.WEST );
    graphicsScroll = new JScrollPane();
    graphicsScroll.add(graphicsPanel);
    graphicsScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
    graphicsScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    graphicsScroll.setVisible(false);
    add(graphicsScroll);

и так же добавил в обработчик нажатия на кнопку появления графика

graphicsScroll.setVisible( !graphicsScroll.isVisible());

Но программа теперь не корректно работает. По нажатию на кнопку появляется только чёрная рамка JScrollPane

введите сюда описание изображения

Почему так происходит? Как можно исправить?


Ответы (0 шт):