如何将字符串数据类型转换为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);
}
}
这是我的代码,我在更改类型的行上收到错误..
答案 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);
}