Есть ли способ преобразовать строку в тип JTextField? - PullRequest
0 голосов
/ 25 февраля 2011

Как мне преобразовать строковый тип данных в тип 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 ]

2 голосов
/ 25 февраля 2011

Я думаю, это то, чего вы пытаетесь достичь:

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 голос
/ 25 февраля 2011

Я решил проблему, добавив массив списков типа JTextField и затем добавив текстовые поля в список. затем, используя цикл, я получил список и заставил его работать !! альт !!! Вот кодовый блок.

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

try {<br> int p_id = made_up.p_id;<br> String sql = "SELECT * FROM pos_metrics WHERE p_id='" + p_id + "'";<br> ResultSet rs = mysql_query.execute_mysql(variables.con.conn, sql);<br> int i = 0;<br> while (rs.next()) {<br> JTextField text1 = list.get(i+6);<br> 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);
    }
1 голос
/ 25 февраля 2011
jTextField.setText(stringValue);

Вот пример .

EDIT:

вместо того, чтобы делать что-то вроде

text1 = (JTextField) metricss; 

попробуй

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

И обязательно добавьте text1 в контейнер (например, JPanel или JFrame)

1 голос
/ 25 февраля 2011
JTextField newTextField = new JTextField(stringVariable);
1 голос
/ 25 февраля 2011

Вы можете создать новое текстовое поле или использовать существующее и просто установить его значение в строку.

...