动态创建JButtons

时间:2013-09-04 11:37:31

标签: java swing dynamic jbutton

你好我有这个设置

private JButton btnFoo, btnBar;

我需要获得以下每个按钮

        btnFoo = new JButton("Foo");
    btnFoo.addActionListener(this);
    add(btnFoo);

在Java中是否可以为我声明的每个按钮动态创建它? 因为当我有5个按钮时,我不想要3x5 = 15行代码,而只需要几行动态创建按钮。

3 个答案:

答案 0 :(得分:6)

写一个小循环并将按钮存储在一个数组中:

private JButton buttons[] = new JButton[5];

String names[] = {"Foo", "Bar", "Baz", "Fob", "Bao"};
for (int i = 0; i < buttons.length; ++i)
{
    JButton btn = new JButton(names[i]);
    btn.addActionListener(this);
    add(btn);
    buttons[i] = btn;
}

答案 1 :(得分:2)

这就是数组和循环的帮助。使用按钮数组并迭代它。 但是如果你担心标识符,那么使用HashMap<String, JButton>可能是一个好方法。

Map<String, JButton> buttons = new HashMap<String, JButton>();
map.put("fooButton", new JButton());
...

通过迭代条目集(只需几行代码),为按钮设置ActionListener

答案 2 :(得分:1)

        boton1= new JButton();
        boton1.setText(" Calcular ");
        add(boton1);
        boton1.setActionCommand("Calcular");
        boton1.addActionListener(this);
        boton1.setEnabled(true);

        String nB2="boton";


        for(int j=2; j<4; j++){
            JButton botonGenerico = new JButton(nB2+j);
            botonGenerico.setText("Calcular"+j);
            add(botonGenerico);
            botonGenerico.setActionCommand("Calcular"+j);
            botonGenerico.addActionListener(this);
            botonGenerico.setEnabled(true);


        }

public void actionPerformed(ActionEvent e){
    String a = e.getActionCommand();

    if(a.equals("Calcular")){
        JOptionPane.showMessageDialog(null, "¡boton 1");

        }
    if(a.equals("Calcular2")){
        JOptionPane.showMessageDialog(null, "¡boton 2");

        }
    if(a.equals("Calcular3")){
        JOptionPane.showMessageDialog(null, "¡boton 3");

        }

}