使用JLabel填充数组

时间:2015-01-02 17:00:21

标签: java arrays user-interface jlabel

我的代码片段包含我的JLabel和JTextFields。我想知道是否 - 为了节省空间 - 我可以以某种方式将我的JLabel和/或JTextField添加到数组中?我有比以下更多的JLabel和JTextFields。

     JLabel lblVundet = new JLabel("Won");
     lblVundet.setBounds(5, 10, 50, 16);
     mainframe.add(lblVundet);

     JLabel lblUafgjort = new JLabel("Draw");
     lblUafgjort.setBounds(5, 55, 60, 16);
     mainframe.add(lblUafgjort);

     JLabel lblTabt = new JLabel("Lost");
     lblTabt.setBounds(5, 100, 60, 16);
     mainframe.add(lblTabt);


     txtFieldWon = new JTextField();
     txtFieldWon.setBounds(168, 4, 134, 28);
     mainframe.add(txtFieldWon);
     txtFieldWon.setColumns(10);

     txtFieldDraw = new JTextField();
     txtFieldDraw.setBounds(168, 49, 134, 28);
     mainframe.add(txtFieldDraw);
     txtFieldDraw.setColumns(10);

     txtFieldLost = new JTextField();
     txtFieldLost.setBounds(168, 94, 134, 28);
     mainframe.add(txtFieldLost);
     txtFieldLost.setColumns(10);

2 个答案:

答案 0 :(得分:0)

如果您只想将它​​们存储在数组中,我建议使用ArrayList:

ArrayList<JLabel> allJLabels = new ArrayList<JLabel>();
ArrayList<JTextField> allJTextFields = new ArrayList<JTextFields>();

如果这就是你想要的。如果所有标签/文本字段具有相同的值,则仅节省空间。但我认为所有标签都不会有相同的文字。 为此,我将创建自己的方法:

private JLabel createLabel(String text, int b1, int b2, int b3, int b4)
{
    JLabel l = new JLabel(text);
    l.setBounds(b1, b2, b3, b4);
    return l;
}

然后它只是一行:

allJLabels.add(createLabel("Won", 5, 10, 50, 16));

然后将它们添加到大型机中(按添加项目的顺序):

for(int i = 0; i < allJLabels.size(); ++i)
{
    mainframe.add(allJLabels.get(i));
}

答案 1 :(得分:0)

您可以创建for循环并减少代码中的冗余。如果你用两种不同的方法分隔下面的代码并调用它们来减少重复就好了。

如果你真的需要(虽然我没有看到任何需要),你可以将标签/字段存储到数组中,因为你有数字标签和字段方便。

String labels[] = {"Won", "Draw", "Lost"};
JLabel label;
for (int i =0; i<labels.length; i++) {
    label = new JLabel(labels[i]);
    label.setBounds(5, 10 + (i * 45), 50, 16);
    mainframe.add(label);
}

JTextField jTextField;
int txtFieldCount = 3;
for (int i=0 ;i<txtFieldCount; i++) {
   jTextField = new JTextField();
   jTextField.setBounds(168, 4 + (i * 45), 134, 28);
   mainframe.add(jTextField);
   jTextField.setColumns(10);
}