【问题标题】:Creating form for CRUD dynamically at run time depending upon the table structure根据表结构在运行时动态创建 CRUD 表单
【发布时间】:2017-10-22 01:33:21
【问题描述】:

我遇到了一个问题,我一直在谷歌上搜索,阅读了很少的资源,现在感觉方向。

这是我的问题。 我正在开发一个应用程序,该应用程序将类似于具有可变表和结构的 MySQL 数据库的 CRUD 应用程序,我无法确定否。表和结构。

我在为可变表结构创建表单时没有方向。我想要实现的是当用户从组合框相关编号中选择表名时。的字段应在检索特定表的表结构后创建。

目前的成就: -我已经能够获取表的结构/模式、数据类型、数据。 - 可以编写查询来创建、更新、删除相同的内容。

无法成功: -我想创建具有与表中关联列名相关的 JTextField 的唯一对象名称的 JTextField。 - 列名是字符串类型,如何将它们转换为 JTextField 的对象。

例如

String f1 = "fieldname_1";  // In reality these string values will be fetched from database resultset containing column names as identifier.
String f2 = "fieldname_2";  // In reality these string values will be fetched from database resultset containing column names as identifier.
JTextField f1 = new JTextField ();

or 

String[] f = {"fieldname_1", "fieldname_2"}; 
JTextField f[0] = new JTextField ();

但它会给出错误,例如 f1 is already defined

注意:我希望输入字段名称是唯一的,以便在输入后更容易访问那里的数据。

欢迎对问题进行更正,如果我处理问题的方法有误,请给出一个简短的想法/方法以朝着正确的方向努力。

问候

【问题讨论】:

标签: java mysql swing


【解决方案1】:

您不能根据列名创建唯一的变量名。

相反,您可以创建一个HashMap 将列名映射到表单中使用的文本字段:

HashMap<String, JTextField> textFields = new HashMap<String, JTextField>();

然后你有一个方法可以将文本字段添加到每个列名的表单中。比如:

provide void addTextField(JPanel form, String columnName)
{
    Jlabel label = new JLabel( columnName );
    form.add( label );
    JTextField textField = new JTextField(10);
    form.add( textField );
    textFields.put(columnName, textField);
}

当然,您需要修改您想要使用的正确布局。

然后,当您想要访问给定列的文本字段时,您可以使用:

JTextField textField = textFields.get(columnName);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2021-04-07
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2016-03-04
    相关资源
    最近更新 更多