【问题标题】: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;
}

【问题讨论】:

  • 也许返回一个 JTextField 数组?

标签: 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);
    }
    

    • 创建List&lt;JTextField&gt;
    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());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 2011-09-08
      • 2016-02-17
      • 1970-01-01
      • 2018-09-10
      • 2018-06-02
      相关资源
      最近更新 更多