Salve ragazzi, stò cercando di applicare degli eventi a dei pulsanti che ho espresso mediante l'utilizzo di un array:
Ecco le classi:
Grid.java
codice:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/* Questo pannello contiene tutti i pulsanti in una griglia con 6 righe e 5 colonne */
public class Grid extends JPanel
{
private MyButton[] pulsanti;
public Grid(){
setLayout(new GridLayout(6,5));
/* istanzio un array di tipo MyButton */
pulsanti = new MyButton[10];
for (int i=0; i<10; i++){
pulsanti[i] = new MyButton(String.valueOf(i));
}
for (int i=0; i<10; i++){
add(pulsanti[i]);
}
}
}
e poi ho la classe MyButton.java:
codice:
import javax.swing.*;
import java.awt.GridLayout;
public class MyButton extends JPanel {
private JButton pulsante;
public MyButton(String testo) {
setLayout( new GridLayout(1, 1) );
setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
pulsante = new JButton(testo);
add(pulsante);
}
}
Praticamente , mediante dei tutorial ho notato che l'azione ad un pulsante posso applicarlo in questo modo:
codice:
public class NomeClasse implements ActionListener {
JButton bottone;
public NomeClasse() {
...
bottone = new JButton("Cliccami");
bottone.addActionListener(this);
}
}
public void actionPerformed(ActionEvent e){
display.setText("10");
}
// supponendo che abbia già creato l'oggetto di tipo JTextField. Quando clicco "Cliccami" , esce all'interno della textfield la scritta 10.
Precisamente l'esempio funzionante è il seguente:
codice:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ActionExample extends JPanel implements ActionListener {
JTextField display;
JButton bottone;
public ActionExample(){
display = new JTextField();
display.setEditable(false);
display.setPreferredSize(new Dimension ( 237 , 50 ));
display.setBackground(Color.white);
add(display);
bottone = new JButton("Cliccami e uscirà 10 nella textField");
add(bottone);
bottone.addActionListener(this);
}
public void actionPerformed(ActionEvent ae){
display.setText("10");
}
public static void main(String[] args) {
JFrame frame = new JFrame("ListenerDemo");
frame.getContentPane().add(new ActionExample(), null);
frame.setSize(300, 150);
frame.setTitle("Prova action");
frame.setResizable(false);
frame.setVisible( true );
}
}
Adesso il mio problema è applicare l'evento ad ogni singolo pulsante dell'array, praticamente dovrei fare in modo che quando clicco, esce il numero all'interno della textField. Come posso fare?