有没有办法将String转换为JTextField类型?

时间:2011-02-25 00:37:38

标签: java swing jtextfield

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

--- ---- EDIT

  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);  
    }  
}

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

5 个答案:

答案 0 :(得分:2)

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

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);  
    }  
}

答案 1 :(得分:1)

您可以创建新文本字段或使用现有文本字段,只需将其值设置为字符串。

答案 2 :(得分:1)

jTextField.setText(stringValue);

这是example

编辑:

而不是像

这样的东西
text1 = (JTextField) metricss; 

尝试

text1 = new JTextField();
text1.setText(metricss);

并确保将text1添加到容器(如JPanel或JFrame)

答案 3 :(得分:1)

JTextField newTextField = new JTextField(stringVariable);

答案 4 :(得分:1)

我通过添加JTextField类型的列表数组然后将文本框添加到列表来解决了这个问题。然后使用循环我检索列表并使其工作!中提琴!这是代码块。

List<JTextField> list = new ArrayList<JTextField>();
list.add(value1);
list.add(value2);
list.add(value3);
list.add(value4);
list.add(value5);
list.add(value6);
list.add(metrics1);
list.add(metrics2);
list.add(metrics3);
list.add(metrics4);
list.add(metrics5);
list.add(metrics6);
list.add(metrics2_1);
list.add(metrics2_2);
list.add(metrics2_3);
list.add(metrics2_4);
list.add(metrics2_5);
list.add(metrics2_6);

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 = 0;
while (rs.next()) {
JTextField text1 = list.get(i+6);
JTextField text2 = list.get(i);

            JTextField text3= list.get(i+12);

            text1.setText(rs.getString("pos_metrics1"));

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