Salve a tutti.
Sono alle prese con la realizzazione in Java di un programma che, data una mappa italiana con circa 70 città, ti restituisce il percorso.
Il programma è stato scritto sfruttando le librerie grafiche Swing e Awt.
In altre parole: ho un'interfaccia grafica divisa in due parti; sulla sinistra c'è la mappa dell'Italia con circa 70 città e a sinistra appare il percorso calcolato.
Nel momento in cui scelgo la città di partenza e quella di arrivo, clicco sul pulsante "Calcola" e in automatico mi viene calcolato il percorso, e in particolare sulla mappa dell'Italia mi viene disegnato il percorso con una linea gialla.
Il problema è questo: quando clicco su reset, si resetta il percorso, ma sulla mappa rimane ancora la linea gialla del percorso precedente!
Come posso fare per risolvere?
Ecco uno screen-shot dell'interfaccia grafica:
Ecco qualche porzione di codice dell'interfaccia, nel caso in cui possa aiutare:
public class Principale extends JFrame
{
private Cartina cart;
private HashMap<String,Integer> nodiRete = new HashMap<String, Integer>();
private Vector<String> path = new Vector<String>();
private JButton calcola, resetta;
private JLabel sorgente, destinazione, etic1, etic2, etic3;
private JRadioButton scelta1, scelta2;
private JScrollPane scroll;
private JList pathList;
public Principale()
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e)
{
JOptionPane.showMessageDialog(null, "Opzione UIManager non implementabile.");
}
setMinimumSize(new Dimension(1000, 600));
inizializzaComponenti();
BufferedImage background;
try {
background = ImageIO.read(new File("images/cartinaItalia.bmp"));
cart = new Cartina(background,sorgente,destinazione);
add(cart);
this.setSize(cart.getSize());
cart.setOpaque(true);
cart.setVisible(true);
BufferedReader in = new BufferedReader(new FileReader("images/coordinate.txt"));
String r = in.readLine();
int i = 1;
while(r != null)
{
String[] l = r.split(" ");
nodiRete.put(l[0],i);
r = in.readLine();
i++;
}
} catch (IOException eccezione)
{
Logger.getLogger(Principale.class.getName()).log(Level.SEVERE, null, eccezione);
JOptionPane.showMessageDialog(null, "Il file della cartina non e' stato trovato.");
}
}
private void inizializzaComponenti()
{
calcola = new JButton();
resetta = new JButton();
sorgente = new JLabel();
destinazione = new JLabel();
etic1 = new JLabel();
etic2 = new JLabel();
etic3 = new JLabel();
scelta1 = new JRadioButton();
scelta2 = new JRadioButton();
scroll = new JScrollPane();
pathList = new JList();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBounds(new java.awt.Rectangle(50, 50, 800, 600));
setResizable(false);
getContentPane().setLayout(null);
getContentPane().setBackground(new Color(45, 45, 45));
etic1.setBackground(new Color(153, 204, 255));
etic1.setText("SORGENTE: ");
..............
..............
..............
..............
calcola.setText("CALCOLA");
calcola.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
calcolaActionPerformed(evt);
}
} );
getContentPane().add(calcola);
calcola.setBounds(640, 200, 110, 20);
resetta.setText("RESET");
resetta.setEnabled(false);
resetta.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
resettaActionPerformed(evt);
}
} );
getContentPane().add(resetta);
resetta.setBounds(640, 230, 110, 20);
..............
..............
..............
..............
private void resettaActionPerformed(java.awt.event.ActionEvent evt)
{
sorgente.setText("***partenza***");
destinazione.setText("***destinazione***");
DefaultListModel model = (DefaultListModel) pathList.getModel();
model.clear();
if(cart.getComponentCount() == 21)
cart.remove(20);
cart.repaint();
resetta.setEnabled(false);
}
private void calcolaActionPerformed(java.awt.event.ActionEvent evt)
{
..............
..............
}
..............
..............
..............
..............
}
Grazie in anticipo.