2017-05-09 1 views
0

Donc, j'ai fait un bouton comme ce nom de paramètre dans LoadPlanet et LoadRR est le paramètre pour montrer certaines données à la zone de texte. mon code est comme ceci le bouton apparaît correctement, mais si j'ai cliqué sur les boutons, tous montrent des données à partir des dernières données qui devaient être des données dans le dernier bouton. -> un résultat de tblplanet.JmlPlanet() est 8, donc le paramètre était comme LoadPlanet (8), de sorte que chaque bouton affiche 8ème données. Ma question est comment faire le paramètre dans la séquence, de sorte que le bouton peut afficher des données correctement?Comment créer une méthode dans un bouton j?

Des idées?

public void createButton() { 
    for (i = 0; i < tblplanet.JmlPlanet(); i++) { 
     tblplanet.draw(i + 1); 
     planet_name = tblplanet.getNama_planet(); 

     JButton PlanetJButton = new JButton(); 
     PlanetJButton.setBounds(10, 5 + (i * 35), 95, 26); 
     PlanetJButton.setText(planet_name); 
     PanelButton.add(PlanetJButton); 

     PlanetJButton.addActionListener(
       new ActionListener() { 

        public void actionPerformed(ActionEvent event) { 
         for (int i = 0; i < tblplanet.JmlPlanet(); i++) { 
          nomor = i; 

          LoadPlanet(nomor); 
          LoadRR(nomor); 
         } 
        } 
       }); 
    } 
} 
+0

Cela n'a rien à voir avec JButtons ... votre méthode actionPerformed chargera la planète 0, puis la planète 1, puis la planète 2, puis ... alors la planète 7 – immibis

+0

ouais logiquement je pense que c'est vrai, mais quand je cours cela, il montre juste les dernières données, donc je suis confus ce que je suppose faire – Student

Répondre

1

Créer une classe qui implémente ActionListener et prend un paramètre (int) de la planète qu'il représente

public class PlanetActionListener implements ActionListener { 

    private final int planet; 

    public PlanetActionListener(int planet) { 
     this.planet = planet; 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     LoadPlanet(planet); 
     LoadRR(planet); 
    } 

} 

simplement Puis ajouter le ActionListener à votre bouton

PlanetJButton.addActionListener(new PlanetActionListener(i)); 

Selon comment vous codez est structuré, vous devrez peut-être faire le PlanetActionListener une classe interne afin qu'il puisse accéder à la méthodes Voir Nested Classes pour plus de détails