Ciao a tutti, da poco ho inziato il mio primo programmino con un tocco di grafica in java, leggendo qualche guida su swing e awt qua e là in giro.
Ma a quanto pare ho un problemuccio sull'utilizzo dell' ActionListener:
In questo programma ho creato dei menu utilizzando Choice , il cui contenuto vorrei poi andare a estrarre con un Bottone, ma ho un problema di una eccezzione java.lang.ClassCastException.
Ho cercato un pò in giro e a quanto ho capito non posso fare il cast di un java.awt.Button su un java.awt.Choice (me lo diceva nel terminale pure.. bastava leggere
)
Comunque.. voi sapreste aiutarmi? Almeno vorrei solo capire se il programmino che sto costruendo è totalmente sbagliato o se sono vicino alla soluzione
.
Codice:
codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class ChoiceActionListener extends JFrame {
public ChoiceActionListener() {
initialize();
}
Choice citta = null,zona=null,tipologia=null;
private void initialize() {
setSize(420, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Font font = new Font("Verdana", Font.BOLD, 20);
citta = new Choice();
citta.add("Torino");
citta.add("Nichelino");
citta.add("Moncalieri");
citta.setFocusable(false);
citta.setFont(font);
zona = new Choice();
zona.add("Mirafiori Nord");
zona.add("Mirafiori Sud");
zona.add("Lingotto");
zona.setFocusable(false);
zona.setFont(font);
tipologia = new Choice();
tipologia.add("Monlocale");
tipologia.add("Bilocale");
tipologia.add("Trilocale");
tipologia.setFocusable(false);
tipologia.setFont(font);
Button save = new Button("Salva");
save.setFont(font);
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
//
// Get the source of the component, which is our combo box.
//
citta = (Choice) event.getSource();
zona = (Choice) event.getSource();
tipologia = (Choice) event.getSource();
//
// Print the selected items and the action command.
//
String message="";
Object obj1 = citta.getSelectedItem();
String _citta = obj1.toString();
message +="Città: "+_citta;
Object obj2 = zona.getSelectedItem();
String _zona = obj2.toString();
message +="Zona: "+_zona;
Object obj3 = tipologia.getSelectedItem();
String _tipologia = obj3.toString();
message +="Tipologia: "+_tipologia;
JOptionPane.showMessageDialog(null, "Hai selezionato " +message);
}
});
setLayout(new FlowLayout(FlowLayout.LEFT));
JTextField tcitta;
tcitta = new JTextField("Città",10);
tcitta.setEditable(false);
tcitta.setFont(font);
getContentPane().add(tcitta);
getContentPane().add(citta);
JTextField tzona;
tzona = new JTextField("Zona",10);
tzona.setEditable(false);
tzona.setFont(font);
getContentPane().add(tzona);
getContentPane().add(zona);
JTextField ttipologia;
ttipologia = new JTextField("Tipologia",10);
ttipologia.setEditable(false);
ttipologia.setFont(font);
getContentPane().add(ttipologia);
getContentPane().add(tipologia);
getContentPane().add(save);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new ChoiceActionListener().setVisible(true);
}
});
}
}
Eccezzione:
codice:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.awt.Button cannot be cast to java.awt.Choice
at ChoiceActionListener$1.actionPerformed(ChoiceActionListener.java:50)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)