Как я могу изменить цвет моей ScrollPane с контейнером для рисования? - PullRequest
0 голосов
/ 19 марта 2020

У меня есть gui пакет с основным классом (MainWindow и java класс DrawingPanel).

В котором у меня есть mainScrollPane (JScrollPane), внутри моей mainScrollPane у меня есть DrawingPanel (который я буду использовать для рисования вещей.)

Итак, я хотел проверить, могу ли я установить цвет фона mainScrollPane.

Мне удалось заставить его работать только в конструкторе окна с: mainScrollPane.setBackground (Color.red );

Но я не понимаю, почему это не работает (цвет вообще не меняется), когда я пытаюсь воспользоваться конструктором DrawingPanel?

Спасибо за вашу помощь!

import java.awt.geom.Dimension2D;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.io.Serializable;
import java.awt.geom.AffineTransform;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
/**
 *
 * @author dany_
 */
public class DrawingPanel extends JPanel implements Serializable {

    private MainWindow mainWindow;

    public Dimension initialDimension;

    private boolean gridActivated = false;

    //va falloir lui donner une valeur initiale
    private double zoomLevel;

    public DrawingPanel() {
    }

    public DrawingPanel(MainWindow mainWindow){
        this.mainWindow = mainWindow;


        int width = mainWindow.getMainScrollPaneDimension().width;

        int height = mainWindow.getMainScrollPaneDimension().height;
        setPreferredSize(new Dimension(width, height));
        setVisible(true);

        this.initialDimension = new Dimension(2400, 1800);
        setBackground(Color.red);
        //mainWindow.getMainScrollPane().getViewport().setBackground(Color.red);
    }


    public Dimension getInitialDimension(){
         return initialDimension;
     }

    public MainWindow getMainWindow()
    {
         return mainWindow;
    }

    public void setMainWindow(MainWindow mainWindow)
    {
        this.mainWindow = mainWindow;
    }

    //grille
    @Override
    protected void paintComponent(Graphics g){
        if (mainWindow != null)
        {
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D) g;
        }
    }
...