如何使用循环从另一个JFrame为一堆JButton设置文本?

时间:2018-05-26 16:25:05

标签: java swing loops jframe jbutton

我在JButton的网格中有36个JFrame个组件,并且当我从打开的菜单中打开框架时,希望将它们的文本设置为1,2,3 ... 36另一帧。 (后来我必须将他们的号码随机化。)

按钮的名称相似:

jButton1
jButton2
jButton3
...
jButton35
jButton36

要将第一个按钮文本更改为1,请执行以下操作:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    grid gr = new grid();
    grid.jButton1.setText("1");
    gr.setVisible(true);
}

有这样的方式吗?:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    grid gr = new grid();
    String number;

    for (int i=1; i<37; i++) {
        number=Integer.toString(i);
        grid.jButton<i>.setText(number);
    }
    gr.setVisible(true);
}

我找到了这些链接,但它们并不是非常有用,因为我的按钮不在任何数组或列表中,而且它们是在同一帧中更改文本,还是没有别的办法?:

Assigning variables with dynamic names in Java

How to give each JButton in a 10 x 10 grid button layout a unique ID/name

How to rename set of JButtons?

1 个答案:

答案 0 :(得分:0)

创建一个JButton类型的ArrayList,向其添加JButton,并使用for-each循环进行迭代并分配值。这段代码适合我。

    JFrame frame = new JFrame();
    frame.setSize(400, 500);
    frame.setVisible(true);
    frame.setLayout(null);

    ArrayList<JButton> buttons = new ArrayList<JButton>();
    JButton b1= new JButton();
    JButton b2= new JButton();
    JButton b3= new JButton();
    JButton b4= new JButton();
    JButton b5= new JButton();

    buttons.add(b1);
    buttons.add(b2);
    buttons.add(b3);
    buttons.add(b4);
    buttons.add(b5);
    int count = 1;
    for(JButton b: buttons)
    {
        b.setText(String.valueOf(count));
        b.setBounds(0,count*50,50,30);
        frame.add(b);
        count++;
    }