2017-05-09 4 views
0

私はこのようなボタンをパラメータnomorのLoadPlanetに、LoadRRをいくつかのデータをテキストボックスに表示するようにしました。 私のコードはこのようです ボタンは正しく表示されますが、ボタンをクリックすると、最後のボタンのデータである最後のデータのデータがすべて表示されます。 - >tblplanet.JmlPlanet()の結果は8なので、パラメータはLoadPlanet(8)のようになり、すべてのボタンは8番目のデータを表示します。jbuttonでメソッドを作成する方法は?

私の質問は、ボタンが正しくデータを表示できるように、パラメータを順番に作る方法です。何か案は?

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

JButtonsとは関係ありません...あなたのactionPerformedメソッドは、惑星0、惑星1、惑星2、惑星7をロードします。 – immibis

+0

ええ、論理的には、私はそれを実行するとき、それはちょうど最後のデータを表示するので、私は何をすると思われる混乱している – Student

答えて

1

それは

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); 
    } 

} 

を表している惑星のActionListenerを実装し、パラメータを取り、クラス(int)を作成し、単にあなたのボタンにActionListenerを追加

PlanetJButton.addActionListener(new PlanetActionListener(i)); 

に応じて、あなたのコードがどのように構造化されているのであれば、適切なクラスにアクセスできるように内部クラスをPlanetActionListenerにする必要がありますメソッド。詳細については、Nested Classesを参照してください

関連する問題