2015-01-02 179 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)); 
}