如何在jbutton中制作方法?

时间:2017-05-09 06:18:01

标签: java swing jbutton actionlistener

所以,我做了一个像这样的按钮 LoadPlanetLoadRR中的参数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);
                        }
                    }
                });
    }
}

1 个答案:

答案 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