【问题标题】:Issue with setText in Java Gui JGui not numbering correctly in JavaJava Gui JGui中的setText问题在Java中没有正确编号
【发布时间】:2011-12-14 18:28:02
【问题描述】:

感谢您花时间查看我的另一个问题。

这似乎是一个基本问题,但我无法解决。

我正在开发一个项目,其中包含员工和这些员工所在的部门。

我制作了一个 setText 框,它通过 for 循环打印出包含列表中所有部门的数组列表的内容。

我希望每个部门都有编号,你知道第 1 部门:巴西销售地点,第 2 部门:美国营销地点。依此类推,但它正在这样做:将它们全部打印在同一行上。

部门编号:3 部门编号:2 部门编号:1 部门名称:市场营销 部门地点:纽约部门名称:销售 部门地点:波士顿部门名称:会计 部门地点:洛杉矶

我使用的代码是这样的

//prints a list of all employees in the system for user to choose from
for (int i = 0; i <  allDepartments.size(); i++) {
    System.out.print("Department no: ");
    departmentDetails.setText("Department no: "+(i+1)+departmentDetails.getText()+" "+ allDepartments.get(i));
    System.out.print(  allDepartments .get(i));
}

请有人帮助我如何正确编码,以便每个部门单独编号。

【问题讨论】:

  • 您的问题有点混乱 - 您希望如何布局?
  • 第1部门:部门名称:销售部地点:纽约 一行又一行..

标签: java user-interface for-loop settext


【解决方案1】:

您似乎没有在字符串中添加任何换行符 (\n)。

您似乎还使用文本字段的内容作为部门详细信息,这就是您获得department3 department2 department1 &lt;details&gt; loc1 loc2 loc3 行为的原因。循环中的每一遍都将“department#”添加到字符串的开头,将“loc#”添加到末尾。循环期间的文本内容将如下所示:

department1 <details> loc1
department2 department1 <details> loc1 loc2
department3 department2 department1 <details> loc1 loc2 loc3

为避免与附加字符串混淆,请尝试在循环中使用 StringBuilder 并在之后处理构建的字符串:

StringBuilder departments = new StringBuilder();
//prints a list of all employees in the system for user to choose from
for (int i = 0; i < allDepartments.size(); i++) {
    departments.append("Department no: ");
    departments.append(i + 1);
    departments.append(" Department name: ");
    departments.append("<departmentDetails>");
    departments.append(" Location: ");
    departments.append(allDepartments.get(i));
    departments.append('\n');
}
System.out.println(departments.toString());

我在本示例的部门名称中使用了一个示例字符串,因为我不确定您的意图是从哪里来的。

【讨论】:

  • FWIW 现代 Java 在进行字符串连接时将使用 StringBuilder,因此实际上没有必要明确使用。
  • 但是你正在循环中追加字符串,这是一个坏主意。最好为整个循环使用一个 StringBuilder。
  • 感谢您的帮助,我将使用您的代码更好地理解并修复我的代码。
  • 现代 Java 在进行字符串连接时使用 StringBuilder;这真的没什么大不了的。 大多数你会在每次迭代中创建一个 StringBuilder ;对象创建速度很快。 IMO 连接更容易阅读。计时;不相信值得付出额外的努力。
  • 也许这只是 10 年 Java 的旧习惯,使用紧密循环,而编译器创建一个 StringBuffer(当时我们没有 StringBuilder)确实很重要!) 每个循环 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多