Salve a tutti,
Allora ho un problema nell'utilizzare il metodo repaint(). In pratica, sto disegnando su un componente di tipo Canvas e quello che dovrei fare è ridisegnare sullo stesso componente ogni volta che viene generato un evento tramite un oggetto di tipo JComboBox ma non riesco a farlo nonostante usi il metodo repaint() ogni volta che viene generato l'evento.
Mi spiego meglio illustrando anche il codice, cosi forse rendo meglio il problema:
codice:
public class MyClass extends JFrame{
......
......
......
......
......
GridPanel gridPanel = new GridPanel();
JPanel panel1 = new JPanel();
comboBox = new JComboBox(.......);
Panel1.add(comboBox);
comboBox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new GridPanel(comboBox, e );
}
});
super.add(panel1);
super.add(gridPanel);
}
Da come si puo vedere dal codice, ho creato una JComboBox e l'aggiungo nel pannello Panel1 all'interno di un JFrame. A questo punto, ogni volta che seleziono un Item nella comboBox devo ridisegnare una griglia tramite la classe GridPanel che è una sottoclasse di Canvas e che a sua volta si trova nello stesso JFrame. Il codice di GridPanel è il seguente:
codice:
public class GridPanel extends Canvas{
JComboBox comboBox;
ActionEvent evt
public GridPanel() {} // costruttore vuoto
public GridPanel( JComboBox cb, ActionEvent e) {
this.comboBox = cb;
this.evt = e;
repaint();
}
public void paint(Graphics g) {
if(comboBox.getSelectedItem().toString().equalsIgnoreCase(".......")){
// codice che disegna/ridisegna la griglia sul componente Canvas
}
if(comboBox.getSelectedItem().toString().equalsIgnoreCase("......")){
// codice che disegna/ridisegna la griglia sul componente Canvas
}
.........
........
........
ecc ecc
}
Ora il problema è che ogni volta che invoco il costruttore di GridPanel quando si genera un evento dalla comboBox( vedi codice sopra in MyClass ) non mi ridisegna niente!!
Qualcuno sarebbe cosi gentile da darmi delle diritte in merito al perche non mi funziona il metodo repaint()??? ...... Forse non va usato in questo modo?!?!?
Grazie Anticipatamente.