L'Action de l'écouteur pour JButton tableau
Disons que j'ai un programme avec un tableau 2D de boutons, et lorsque vous cliquez sur l'un d'entre eux, il s'allume en rouge. Je ne voulais pas déclarer tous les boutons séparément, donc je viens de créer JButton[][] tableau pour eux. Le problème est que je ne sais pas comment faire pour utiliser l'action d'écoute sur l'un des boutons du tableau de sorte qu'il serait de changer la couleur de ce bouton, et aucune des questions connexes est pertinente pour le présent. J'ai essayé d'utiliser "pour" mais il ne l'aide pas:
package appli;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MainW extends JFrame implements ActionListener {
public MainW(){
setSize(640,480);
setTitle("title");
setLayout(null);
JButton[][] btnz = new JButton[5][5];
for(Integer i=0;i<5;i++)
{
for(Integer j=0;j<5;j++)
{
btnz[i][j]= new JButton("");
btnz[i][j].setBackground(Color.WHITE);
btnz[i][j].setBounds(10+20*i,10+20*j,20,20);
add(btnz[i][j]);
btnz[i][j].addActionListener(this);
}
}
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
for(Integer i=0;i<5;i++)
{
for(Integer j=0;j<5;j++)
{
if (e.getSource()==btnz[i][j]);
{
btnz[i][j].setBackground(Color.RED);
}
}
}
}
}
OriginalL'auteur user530809 | 2011-01-05
Vous devez vous connecter pour publier un commentaire.
avez-vous essayé:
Une des raisons pour lesquelles votre code ne peut pas fonctionner, c'est que le
JButton[][]
vous utilisez pour créer vos boutons est local à votreMainW
constructeur. L'approche que j'ai fourni vous permettra d'ignorer ce problème de délimitation de l'étendue. Il va également supprimer votre approche itérative, et de le remplacer par une solution plus efficace. Dans votre code, même si l'événement est déclenché par le premier élément de votre liste, ou même pas déclenché par l'un de vos boutons, vous pourrez toujours effectuer une itération sur l'ensemble du tableau 2D et de tester chacun d'eux.OriginalL'auteur akf