所以,我做了一个像这样的按钮
LoadPlanet
和LoadRR
中的参数nomor是向文本框显示一些数据的参数。
我的代码是这样的
按钮显示正确,但是如果我单击按钮,它们全部显示最后一个数据中的数据,这些数据应该是最后一个按钮中的数据。
- > tblplanet.JmlPlanet()
的结果为8,因此参数类似于LoadPlanet(8),因此每个按钮都显示第8个数据。
我的问题是如何按顺序制作参数,这样按钮可以正确显示数据?有什么想法吗?
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 :(得分: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