2015-01-02 181 views
1

我有我的JLabels和JTextFields代码片段。我想知道是否为了节省空间 - 我可以以某种方式将我的JLabel和/或JTextFields添加到数组中?我有更多的JLabels和JTextField比下面的更多。如果这是你想要的使用JLabels填充数组

ArrayList<JLabel> allJLabels = new ArrayList<JLabel>(); 
ArrayList<JTextField> allJTextFields = new ArrayList<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); 
+1

你想用这个数组做什么?如果你只是想减少代码,那么你可以创建诸如createLabel(String text,int yCoord,JPanel panel)或createTextField(int yCoord,JPanel panel)的方法并相应地调用它们。 – Tom

回答

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); 
} 
+1

哈哈谢谢@汤姆做了更改;) – SMA

0

如果你只是想保存那些在一个数组,我会建议使用ArrayList。如果所有标签/文本字段具有相同的值,则这只会节省空间。但我认为所有标签都不会有相同的文字。 为此,我想创建自己的方法:

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)); 
}