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:
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 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); }
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!!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 }
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.![]()
![]()
![]()

Rispondi quotando