【问题标题】:Create a method to create more textfields based on user input in Java创建一个基于 Java 中的用户输入创建更多文本字段的方法
【发布时间】:2021-12-25 04:28:16
【问题描述】:
我需要创建一个接受整数并根据整数创建文本字段的方法。
例如:
createJextField(5) => ["5 textfields are created"]
问题是,我无法返回文本字段,因为保存文本字段的变量在 for 循环中使用。这是我目前所拥有的:
static JTextField createSlot(int number) {
for (int i = 0; i < number; i++) {
JTextField slot = new JTextField();
}
return slot;
}
【问题讨论】:
标签:
java
user-interface
methods
return-value
【解决方案1】:
您的代码只是多次重新定义一个值并返回一个 JTextField。你需要更多类似的东西(我没有测试这段代码,所以很可能有错别字):
public void addTextFields(int numToAdd, Container container) {
for (int i = 0; i < numToadd; i++) {
container.add(new JTextField());
}
}
【解决方案2】:
您需要返回一个数组或文本字段的集合(列表):
static JTextField[] createSlot(int number) {
JTextField[] slot = new int[number];
for (int i = 0; i < number; i++) {
slot[i] = new JTextField();
}
return slot;
}
使用Stream::generate:
static JTextField[] createSlot(int number) {
return Stream.generate(JTextField::new)
.limit(number)
.toArray(JTextField[]::new);
}
static List<JTextField> createSlot(int number) {
List<JTextField> list = new ArrayList<>(number);
for (int i = 0; i < number; i++) {
list.add(new JTextField());
}
return list;
}
使用流 API
static List<JTextField> createSlot(int number) {
return Stream.generate(JTextField::new)
.limit(number)
.collect(Collectors.toList());
}