2

我希望从术语上来说,GUI 中的组件就像 JButton、JPanel、JTextField 等所有好东西是正确的。

我想创建一个接受整数的文本字段。然后可以按下提交按钮,并根据输入的整数,在弹出窗口或其他任何内容中创建那么多文本字段。

我不知道,有人可以让我朝着正确的方向开始吗?

我遇到的麻烦是我不知道如何创建一个 for 循环来创建 GUI 组件。我的意思是,如果我有一个 for 循环并执行以下操作:

print("JTextField num1 = new JTextField()");

然后在 for 循环中,当我想要很多时,它只会创建 1 个文本字段。我如何一般地创建 JTextFields 的变量?

谢谢你的帮助...

4

3 回答 3

6

使用适当的 LayoutManager(例如 GridLayout)来创建和添加您的文本字段。

for (i = 0; i < numberOfTextFields; i++) {
    JTextField textField = new JTextField();
    container.add(textField);
    /* also store textField somewhere else. */
}
于 2008-12-15T10:24:17.620 回答
1

尝试这样的事情:

List<JTextField> nums = new ArrayList<JTextField>();
JTextField tempField;

for (int i = 0; i < 10; i++) {
    tempField = new JTextField();
    jPanel1.add(tempField); // Assuming all JTextFields are on a JPanel
    nums.add(tempField);
}

不要忘记为容器设置适当的布局管理器。(在这种情况下为 jPanel1)

于 2008-12-15T10:24:36.200 回答
0

我会创建一个列表来存储文本字段,然后您可以通过索引将它们取回。然后,您可以根据需要拥有任意数量的字段。

List fields = new ArrayList();

// Create as many elements as you need
for (int i = 0; i < numberOfElements; i++){
  JTextField field = new JTextField();
  // Add the fields to some panel so they are shown in the screen.  
  // I assume that the component is called parent panel
  parentPanel.add(field);

  // Store the component in the list so you can retrieve it later
  fields.add(field);
}

// ...

// When you want to retrieve a particular one:

JTextField field = (JTextField)fields.get( indexToRetrieve );
于 2008-12-15T10:20:57.050 回答