-3

在我的应用程序中,执行了一个数据库查询。查询获取表的列名。我想根据我的数据库的列名制作一个 jlabel 和 jtextfield。如果我按下提交按钮,则获取它们的值。任何帮助表示赞赏。谢谢你。

我已经尝试了以下代码..但没有运气..

public void getColumn(){
        String sql = "SELECT * from user";

        try {
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            int columnCount = rsmd.getColumnCount();
            int count = 1; 

            ArrayList<String> columns= new ArrayList<String>();
            for(int i = 1; i<= columnCount; i++){
                columns.add(rsmd.getColumnName(i));
               / System.out.println(String.valueOf(columns));
            }
            ArrayList<JTextField> fields = new ArrayList<JTextField>();
        for(int i = 0; i <columns.size();i++){
                JLabel jl = new JLabel(String.valueOf(columns.get(i)));
            jp.add(jl);
            JTextField f = new JTextField(String.valueOf(columns.get(i)));
            fields.add(f);
            jp.add(f);
                        this.revalidate();
                        this.repaint();
               }

我不需要在 JTable 中输出我的查询。我只需要我的数据库中的列名,然后在运行时基于它创建一个 jlabel 和 jtextfield。

举个例子。

这是我的用户表..

id | fName | mName | lName

如果我点击一个按钮......结果将是这个......

id | ___________________ 
Name | _______________ 
mName | _______________ 
lName | _______________

引用文本框的行...

4

2 回答 2

1
于 2013-06-13T08:54:12.010 回答
0

我已经解决了我的问题。

在过去的两天里,这个问题一直困扰着我。最后,经过大量的试验和错误,我意识到这是一个关于选择正确 LayoutManager 的问题。

默认情况下,在 NetBeans 中通过拖放添加的容器(即 JPanel、JScrollPanel)使用 GroupLayout。因此,如果您尝试将新的运行时生成的组件添加到这些容器中,它们将不会出现。

解决这个问题的方法是重置布局管理器。到目前为止,GridLayout 和 FlowLayout 管理器工作得很好。

 jpanel.setLayout(new GridLayout());

而且,这解决了我的问题。

于 2013-06-14T05:36:10.387 回答