gpt4 book ai didi

java - LinkedHashMap 中带有 JTextField 的 JLabels

转载 作者:行者123 更新时间:2023-12-01 09:00:58 25 4
gpt4 key购买 nike

我有一个程序,其中一部分要求用户确定 40 周中每周的天数 (def = 5)。

用户首先填写40周的天数,然后设置每周的天数。

现在,我将 JLabel (KEY) 和 JTextfield (VALUE) 存储在 LinkedHashMap 中,

  LinkedHashMap<JLabel, JTextField> weeksMap = new LinkedHashMap<JLabel,JTextField>();
for (int i=1; i<=40; i++) {
JLabel weekL = new JLabel("Week "+i);
JTextField weekF = new JTextField(10);
weekF.setText("5");
//SetWeekAction sWA = new SetWeekAction(mainPane, weekL, weekF);
//weekF.addActionListener(sWA);
weeksMap.put((weekL), weekF);
}

当用户设置某一年的总天数后,它们将被添加到面板中。

编辑 - 注意:将这两个放在 HashMap 中的原因是我无法在 lick 上创建元素,否则我可以创建无限的标签和文本字段,并且我不希望使用 buttonpressed=true 或类似的。我需要在“点击”发生之前“准备好”文本字段和标签。

 for (Map.Entry<JLabel, JTextField> entry : weeksMap.entrySet()) {
index++;
weeksPane.add(entry.getKey());
weeksPane.add(entry.getValue());
}

GUI View

如何获取“第 23 周”等文本字段? for 循环遍历列表并正确添加对象,但我不再引用该特定对象。

最佳答案

您可以使用一个ArrayList来存储文本字段和标签文本

ArrayList<JTextField> weeks = new ArrayList<JTextField>();

for (int i=1; i<=40; i++) {
JTextField weekF = new JTextField(10);
weekF.setName("Week "+i);
weekF.setText("5");
JLabel weekL = new JLabel(weekF.getName());
weekL.setLabelFor(weekF);
weeks.put(weekF);
}

在更新事件中,您可以使周面板无效并重新绘制

关于java - LinkedHashMap 中带有 JTextField 的 JLabels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41666596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com