在运行时创建JLabel和JTextField

时间:2013-06-13 08:32:36

标签: java swing runtime jlabel jtextfield

在我的应用程序中,执行db查询。该查询获取表的列名称。我想根据我的数据库的列名创建一个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 | _______________

引用文本框的行...

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我已经解决了我的问题。

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

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

要解决此问题,请重置布局管理器。到目前为止,GridLayout和FlowLayout管理器运行良好。

 jpanel.setLayout(new GridLayout());

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