gpt4 book ai didi

java - 动态创建JTextAreas?

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:17 25 4
gpt4 key购买 nike

使用 WindowBuilder 在 Eclipse 中开发 GUI 并遇到了障碍..

我创建了一个带有下拉框的 JWindow,用于显示人员数组中的人员列表。我的类(class)结构是:

public class Person {
String name;
int age;
ArrayList<Goal> goals;
}

public class Goal {
String name;
int daysToComplete;
}

在此 JWindow GUI 中,下拉框列出了所有 Person 实例。一旦我选择了一个人(假设鲍勃) - 我想动态创建标签和 JTextAreas 来列出鲍勃的属性值,例如:

Name: Bob
Age: 20
Goals:
- Goal 1, complete in X days
- Goal 2, complete in Y days

等等..我不想静态添加3个标签(Name、Age、Goals)及其各自的JTextAreas(Bob、20、Goal 1/Goal 2),因为Person的结构将来可能会发生变化。

最好的方法是什么?

谢谢!

最佳答案

如果我理解正确,您可以通过创建 JLabelJTextArea 的匿名实例并将它们放入数组列表中来获得您想要的内容。我不知道您的环境的具体情况,但希望您能遵循这个想法:

ArrayList<JLabel> nameLabelList = new ArrayList<JLabel>();
ArrayList<JLabel> ageLabelList = new ArrayList<JLabel>();
ArrayList<Goal> goalList = new ArrayList<Goal>();

// Event handler method

public void personSelected(person)
{
nameLabelList.add(person.name);
ageLabelList.add(person.age);
// This assumes each person has a single goal. You can adapt the code
// for multiple goals easily
goalLabelList.add(person.goal);
}

然后,创建列表后,您所要做的就是循环这些数组列表并将它们吐出到您的 UI 中:

for(int counter = 0; counter < nameLabelList.size; counter++)
{
myContainer.add(nameLabelList.get(counter));
myContainer.add(ageLabelList.get(counter));
myContainer.add(new JLabel(goalList.get(counter).toString()));
}

添加数组列表的内容后,确保它们显示在 UI 中:

   myContainer.revalidate();
myContainter.repaint();

关于java - 动态创建JTextAreas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38615094/

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