2017-05-09 16 views
0

所以,我在LoadPlanetLoadRR参数提供者 这样的一个按钮是显示一些数据到文本框的参数。 我的代码是这样的 按钮显示正确,但是如果我点击按钮,它们都显示最后一个数据应该是最后一个按钮中的数据。 - >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

它无关Jbutton将...您的actionPerformed方法将加载星球0,那么地球1,然后星球2,然后......然后地球7 – immibis

+0

是的逻辑,我认为这是真的,但当我运行它时,它只显示最后的数据,所以我很困惑我想要做什么 – Student

回答

1

创建一个实现ActionListener并采取了地球的参数(int),它代表

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到您的按钮

PlanetJButton.addActionListener(new PlanetActionListener(i)); 

根据一类代码的结构如何,您可能需要将PlanetActionListener设置为内部类,以便可以访问相应的代码方法。见Nested Classes更多细节

相关问题