0

我制作了一个应用程序,它将获取数据库的列名,并在运行时根据数据库的列名创建一个 jlabel 和 jtextfield。

这是代码片段:我在这里使用 Netbeans ...

 public void getColumn(){
        String sql = "SELECT * from user";
        jPanel.setLayout(new GridLayout(0,2));

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

            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)));
            jPanel.add(jl);
            JTextField f = new JTextField(50);
            fields.add(f);
            jPanel.add(f);
                        this.revalidate();
                        this.repaint();
               }

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }


这将是示例输出。

id | ______________
fName | _____________
mName | _______________
lName | ________________

引用 JTextFields 的行..

但是,我无法获取在 jtextfields 中输入的值。我试过使用下面的代码。但没有运气。任何帮助表示赞赏。

for(JTextField field : fields){
                JOptionPane.showMessageDialog(null, field.getText());
        }
4

2 回答 2

0

更好的解决方案是使用 JTable。阅读 Swing 教程中有关如何使用表格的部分以获取更多信息。

您还可以查看Table From Database以获取一些简单的代码来帮助您入门。有关最简单的解决方案,请参阅“TableFromDatabaseExample”代码。

于 2013-06-14T15:32:14.397 回答
0

也许你可以试试这个:

Component children[] = jp.getComponents();
for(Component child : children) {
  if(child instanceof JTextField) [
     JOptionPane.showMessageDialog(null, ((JTextField)child).getText());
  }
}
于 2013-06-14T08:59:13.077 回答