Przerysowanie widgetu

0

Rysuje w przeciazanym paint na JPanel. Po kliknieciu na button chce, aby paint z JPanela zostal wywolany jeszcze raz(tzn, zeby moj 'rysunek' zostal odswiezony. Co mam zrobic? (zdarzenia przycisku mam opanowane)

0

moze napisze dokladniej o co mi chodzi:

PaintBoard panel = new PaintBoard(); // dziedziczy z JPanel
JButton button = new JButton("klik");
button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                // Co tu wpisac, aby przerysowac "panel"?
            }
});
0
panel.repaint();
//może wystarczyć
repaint();
0

tez probowalem w ten sposob, ale gdy wstawiam to w zaznaczone przeze mnie miejsce podkresla mi "panel" na czerwono i wyskakuje opis:

local variable panel is accessed from within inner class; needs to be declared final

rozumiem, ze mam przekazac to w jakis sposob, ale jak?

0

Zdefiniuj pole w klasie

public class BleBle
{
     private PaintBoard panel;
     ....

wtedy zmienna panel będzie widoczna we wszystkich metodach klasy. W konstruktorze daj coś takiego

    panel=new PaintBoard();
    //i nie zrób typowego błędu nowicjuszy:
    //PaintBoard panel = new PaintBoard();
0

zrobilem to w taki sposob:

public class Repaint implements ActionListener{
    PaintBoard panel;
    public Repaint(PaintBoard panel){
        this.panel = panel;
    }

    public void actionPerformed(ActionEvent e){
        panel.repaint();
    }
}

i wywoluje

button.addActionListener(new Repaint(panel));

cos do poprawienia?

0

A działa?
Jeżeli nie działa, to sprawdź czy panel w konstruktorze klasy Repaint

button.addActionListener(new Repaint(panel)); 

to właśnie ten panel, na którym chcesz rysować.

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