【问题标题】:Java Swing - Dynamically create JTextFieldJava Swing - 动态创建 JTextField
【发布时间】:2016-04-14 20:23:25
【问题描述】:

我想创建几个 JTextField,然后我可以在他们点击提交按钮后从中获取用户数据。我正在使用下面的代码为文本字段动态创建标签,并计划以类似的方式创建文本字段,但我意识到如果我这样做,这些字段将没有变量名,我将无法提取数据。如果我以类似于下面显示的方式创建它们,是否有办法动态分配变量名称或以其他方式从文本字段中检索数据?

    int autoX = 0;
    int autoY = 0;
    for (int i = 0; i< units.numOfUnits(); i++ ){
        c.gridx = (autoX % 5);
        c.gridy = autoY;
        if((autoX % 5) == 4){
            autoY++;
        }
        mainPanel.add(new JLabel(units.getUnit(i)),c);
        autoX++;
    }

【问题讨论】:

    标签: java swing jtextfield


    【解决方案1】:

    您需要保留对您创建的文本字段的引用。像这样:

    List<JTextField> textFields = new ArrayList<JTextField>();
    int autoX = 0;
    int autoY = 0;
    for (int i = 0; i< units.numOfUnits(); i++ ){
        c.gridx = (autoX % 5);
        c.gridy = autoY;
        if((autoX % 5) == 4){
            autoY++;
        }
        mainPanel.add(new JLabel(units.getUnit(i)),c);
        JTextField textField = new JTextField();
        mainPanel.add(textField);
        textFields.add(textField);
        autoX++;
    }
    

    然后你可以参考一个特定的文本字段:

    textFields.get(0).getText();
    

    【讨论】:

    • 谢谢!我最终将 List 设置为代码所在类的私有变量,以便其他方法可以访问它,但我没有说明它在一个类中。
    猜你喜欢
    • 2013-03-29
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多