Przezroczystość JPanel przy repaint()

0

Witam... szukałem podobnego tematu ale nie znalazłem dlatego zakładam nowy:

Mam problem z moim programem w Java. Przygotowałem klasę rozszerzającą JPanel.

public class PanelGry extends JPanel {
    private int tryb=1;
    private Point poleP=null;
    private Point poleK=null;
    

    @Override
    public void paintComponent(Graphics g){
        Graphics2D g2d = (Graphics2D) g;
        int width = getWidth();
        int height = getHeight();
        g2d.setPaint(new Color(255,255,255,80));
        g2d.fillRect(0, 0, getWidth(), getHeight());
        rysujPlansze(g2d);

        // rysowanie punktu dla Pola P
        if(poleP!=null){
            g2d.setPaint(new Color(0,255,0,255));
            g2d.fillRect(30*poleP.x+1,30*poleP.y+1,29,29);
        } 
    }
    private void rysujPlansze(Graphics2D g){
        /**
         * Rysuje paski planszy
         */
        for(int i=1;i<11;i++){
            g.setPaint(new Color(0,0,0,255));
            g.drawLine(0,i*30,getWidth(),i*30);
            g.drawLine(i*30,0,i*30,getHeight());
        }
        
    };
    
    public void rysujPoleP(Point p){
        
    }
    public void setPoleP(Point p){
        poleP=p;
    }
    
    public int getTryb(){
        return tryb;
    }
    public void setTryb(int nTryb){
        tryb = nTryb;
    }
    
}

Generalnie problem polega na tym, że JPanel jest przezroczysty i gdy pierwszy raz jest wyświetlany to tworzy się plansza 10x10 pól po 30px każdy. To wszystko jest ok. Problem powstaje gdy chcę wywołać repaint() dla niego. Ustawiam zewnętrznie poleP i gdy jest ustawione chcę, żeby mi przerysował planszę od nowa z tym polem (ponieważ potem chcę je usunąć, chcę, żeby za każdym razem było od zera rysowane). Problem polega na tym, że gdy wywołam repaint() on tylko dorysowuje kolejną warstwę. A więc tam gdzie rysowałem kwadrat biały półprzezroczysty, to robi się następny na nim, co za tym idzie widać mniej przezroczyste pole (każde dodanie kwadratu sprawia, że co raz mniej przezroczysty jest panel).

Jak mogę wyczyścić rysowanie na JPanelu?

Próbowałem Graphics2D.clearRect(...), ale ono robiło mi nieprzezroczysty biały kwadrat.
Próbowałem też bawić się metodami JPanela, ale nic nie dało to!

To sprawa bardzo pilna, dlatego prosiłbym o prędką pomoc!

0

Już poradziłem sobie.
Wystarczyło ustawić setOpaque na false .... jakoś nie ustawiłem wcześniej.

Temat można usunąć :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1