PDA

View Full Version : [JAVA]Problema Interfaccia grafica


domenico88
04-02-2011, 17:10
ciao a tutti, ho fatto questa semplice interfaccia con java (a mano)

http://img690.imageshack.us/i/interfaccimes.jpg/

ora il mio problema è questo, quando voglio creare il listener dei tasti della qwerty come faccio a dare al listener il tasto desiderato e quindi visualizzarlo nell'area di testo?

Altrimenti dovrei creare un listener per ogni tasto, ma non mi sembra una soluzione molto elegante...Help please!

PGI-Bis
04-02-2011, 19:31
Basta un action listener per tutti. Se lo usi solo coi pulsanti sai che la sorgente dell'evento ActionEvent è un pulsante, puoi prendere il carattere dall'etichetta o usare il comando associato.

ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
String lettera = e.getActionCommand();
jTextArea.append(lettera);

/* oppure
AbstractButton button = (AbstractButton) e.getSource();
String lettera = button.getText();
jTextArea.append(lettera);
*/
}
}

Usi "listener" per tutti i pulsanti e sei a posto.

Il valore di "getActionCommand" è pari al valore del campo actionCommand (setActionCommand/getActionCommand) del pulsante che di norma è il testo del pulsante.

Se:

JButton b = new JButton("q");

allora b.getActionCommand vale "q"

Se:

JButton b = new JButton("q");
b.setActionCommand("pippo");

allora b.getActionCommand vale "pippo".

domenico88
04-02-2011, 22:52
si grazie...:D

Del tipo


class QwertyListener implements ActionListener{
private int i;
public QwertyListener(int i){
this.i = i;
}
public void actionPerformed(ActionEvent e) {

String c = e.getActionCommand();
AreaCaratteri.append(c);
}
e aggianciato ai pulsanti in questo modo nel costruttore della classe principale


for(int i=0; i<qwerty.length; i++){
qwerty[i] = new JButton();
qwerty[i].addActionListener(new QwertyListener(i));
}

bah però non ho capito come fa 'getActionCommand()' a sapere quale pulsante ho premuto:confused:

Shinnok.Exor
04-02-2011, 23:07
bah però non ho capito come fa 'getActionCommand()' a sapere quale pulsante ho premuto:confused:

E a cosa ti serve sapere quale pulsante hai premuto ? :)

A te serve un ActionListener che prenda il testo del button cliccato e lo appenda nel JTextBox, indifferentemente dal bottone premuto, lui fa queste azioni.

domenico88
04-02-2011, 23:17
e lo so hai perfettamenta ragione:D solo che i prof all'uni so rompi....ecc ecc:D

possono chiedere queste cose...cioè cosa accade quando premiamo su un bottone...è stato chiesto a questo esame...io devo ancora scoprirlo però:D

Shinnok.Exor
04-02-2011, 23:25
e lo so hai perfettamenta ragione:D solo che i prof all'uni so rompi....ecc ecc:D

possono chiedere queste cose...cioè cosa accade quando premiamo su un bottone...è stato chiesto a questo esame...io devo ancora scoprirlo però:D

Semplicemente il pulsante richiama il metodo actionPerformed passandogli l'oggetto che ha generato l'azione.

Con questo codice
qwerty[i].addActionListener(new QwertyListener(i));

semplicemente passi l'oggetto del quale il pulsante richiamerà il metodo actionPerformed(), di cui precedentemente ne hai fatto l'override