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
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ć.