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
e poi ho la classe MyButton.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]); } } }
Praticamente , mediante dei tutorial ho notato che l'azione ad un pulsante posso applicarlo in questo modo: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); } }
Precisamente l'esempio funzionante è il seguente: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.
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?

Rispondi quotando