我有一个应用程序计算一周内所有七天的时钟 - 小时数。我的计划是让用户介绍每天的进入和离开小时/分钟,从而收集这些数据进行计算。
UI部分应该是:
Monday: mondayEntryHour : mondayEntryMinutes mondayLeaveHour : mondayLeaveMinutes
Tuesday: tuesdayEntryHour : tuesdayEntryMinutes tuesdayLeaveHour : tuesdayLeaveMinutes
....
我收集数据的所有位置JTextFields
以及它们之间的:
都是JLabel
。所有14个标签都有相同的内容,相同的字体和样式,但我不能创建一个相同的变量,并在所有需要的地方添加14次,因为它只是最后一次添加。
为了证明我说的话,我在这里有一个SCCEE:
import java.awt.Cursor;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
public class RepeatedJLabel extends JFrame {
public RepeatedJLabel() {
run();
}
public void run() {
JPanel p = new JPanel();
p.setLayout(new MigLayout("debug, fill", "[grow]", "[]10[]10[]"));
JLabel label = new JLabel("MY LABEL 1");
p.add(label, "cell 0 1, grow");
p.add(label, "cell 0 2, grow");
p.add(label, "cell 0 3, grow");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
getContentPane().setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
getContentPane().add(p);
setVisible(true);
setLocationRelativeTo(null);
setResizable(true);
pack();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
RepeatedJLabel test = new RepeatedJLabel();
}
});
}
}
我必须为它们创建14个变量吗?这是愚蠢的。我不想与这个变量的复制/浅拷贝/深拷贝混合,因为它太简单了。有什么想法吗?
答案 0 :(得分:0)
使用factory method创建每个JLabel
:
private static JLabel newLabel() {
return new JLabel("MY LABEL 1");
}
每次使用for
循环添加JLabel
:
final int amountOfLabels = 3;
for(int i = 0; i < amountOfLabels; i++) {
panel.add(newLabel(), "cell 0 " + i + ", grow");
}