如何将字符串数据类型转换为JTextField类型。我在窗口中设置了一组文本框,我想使用循环从数据库中填充它。我正在构造一个内容与文本框名称相同的字符串,现在我想将数据类型更改为JTextField。

- -编辑 - -

  private void formWindowOpened(java.awt.event.WindowEvent evt) {
    try {
        int p_id = made_up.p_id;
        String sql = "SELECT * FROM pos_metrics WHERE p_id='" + p_id + "'";
        ResultSet rs = mysql_query.execute_mysql(variables.con.conn, sql);
        int i = 1;
        while (rs.next()) {
            Object metricss = "metrics1" + i;
            Object metricss2 = "metrics2_" + i;
            Object values = "value" + i;
            JTextField text1;
            JTextField text2;
            JTextField text3;
            text1 = (JTextField) metricss;
            text2 = (JTextField) metricss2;
            text3 = (JTextField) values;
            text1.setText(rs.getString("pos_metrics1"));
            text2.setText(rs.getString("pos_metrics2"));
            text3.setText(rs.getString("pos_value"));
            i++;
        }
    } catch (SQLException ex) {
        Logger.getLogger(unit_builder.class.getName()).log(Level.SEVERE, null, ex);
    }
}


这是我的代码,我在更改类型的行上遇到错误。

最佳答案

我认为这是您要实现的目标:

private void formWindowOpened(java.awt.event.WindowEvent evt) {
    try {
        int p_id = made_up.p_id;
        String sql = "SELECT * FROM pos_metrics WHERE p_id='" + p_id + "'";
        ResultSet rs = mysql_query.execute_mysql(variables.con.conn, sql);
        int i = 1;
        while (rs.next()) {
            String metricss = "metrics1" + i;
            String metricss2 = "metrics2_" + i;
            String values = "value" + i;

            JTextField text1;
            JTextField text2;
            JTextField text3;

            text1.setName(metricss);
            text2.setName(metricss2);
            text3.setName(values);

            text1.setText(rs.getString("pos_metrics1"));
            text2.setText(rs.getString("pos_metrics2"));
            text3.setText(rs.getString("pos_value"));
            i++;
         }
    } catch (SQLException ex) {
        Logger.getLogger(unit_builder.class.getName()).log(Level.SEVERE, null, ex);
    }
}


setName()设置JTextField的名称,它将是当前的本地实例。我不知道它是否对文本字段具有可见效果。您可能必须使用边框。

- 编辑 -

根据您的评论,这是选项2的示例:

-编辑2--

此代码无法编译。 Class.forName()被用于错误的目的...

private void formWindowOpened(java.awt.event.WindowEvent evt) {
    try {
        int p_id = made_up.p_id;
        String sql = "SELECT * FROM pos_metrics WHERE p_id='" + p_id + "'";
        ResultSet rs = mysql_query.execute_mysql(variables.con.conn, sql);
        int i = 1;
        while (rs.next()) {
            String metricss = "metrics1" + i;
            String metricss2 = "metrics2_" + i;
            String values = "value" + i;

            JTextField text1 = Class.forName(metricss);
            JTextField text2 = Class.forName(metricss2);
            JTextField text3 = Class.forName(values);

            text1.setText(rs.getString("pos_metrics1"));
            text2.setText(rs.getString("pos_metrics2"));
            text3.setText(rs.getString("pos_value"));
            i++;
         }
    } catch (SQLException ex) {
        Logger.getLogger(unit_builder.class.getName()).log(Level.SEVERE, null, ex);
    }
}

07-24 18:52
查看更多