2016-10-31 8 views
1

I have one JInternalframe in which there are many JRadioButton and JLabel. I want to Retrive Data from Database and display on this JRadioButton and JLabel
Da kann es Zeilen in der Datenbank geben, die abgerufen werden. I successfullly die Daten aus der Datenbank geholt hatte, aber nicht in der Lage es auf JRadioButton und JLabel zu setzensetText auf JRadioButton dynamisch

void setData(String s1, String s2, String s3, int cnt) { 
     //Setting JRadioButton and JLabel Coding Part Here 
    } 

In obiger Funktion in Variable s1, s2, s3 Daten vorhanden ist, die ich anzeigen mag, und in Variable cnt gibt es Wert des Zählers, der auf resultset.next erhöhen()

Kann jemand mir ein paar Tipps, wie Sie Daten auf JRadioButton und JLabel
wie BT1, BT2, BT3 JRadioButton Variale Name ... ist also etwas anzuzeigen Ich versuchte

+0

Es ist nur so, wie Sie in Ihrer Frage Titel sagte . Angenommen, der Verweis auf Ihren 'JRadioButton' ist' btn', rufen Sie einfach 'btn.setText (s1)' auf. 'JLabel' hat eine öffentliche' setText' Methode und 'JRadioButton' erbt sie von' AbstractButton'. – ccjmne

+0

Vielen Dank für Ihren Vorschlag, aber da im Fall, dass mehr als 1 Datensätze abgerufen werden, möchte ich es in separaten JRadioButton und JLabel anzeigen, so dass jedes Mal Variablenname unterschiedlich sein wird. Zum Beispiel Wenn 2 Datensätze abgerufen werden, sollten Daten in BT1 und angezeigt werden BT2 und so weiter Bitte beachten Sie den beigefügten Screenshot für weitere Details –

Antwort

1

Da die Daten dynamisch sind, sollte die GUI auch dynamisch sein.

Betrachten Sie das folgende Beispiel:

import javax.swing.JLabel; 
import javax.swing.JRadioButton; 

public class GuiRow { 

    /** jRadioButton */ 
    private JRadioButton jRadioButton; 

    /** studentIdLabel */ 
    private JLabel studentIdLabel; 

    /** nameLabel */ 
    private JLabel nameLabel; 

    /** courseLabel */ 
    private JLabel courseLabel; 

    /** 
    * Constructs a new instance. 
    * 
    * @param studentIdtext 
    * @param nameText 
    * @param courseText 
    */ 
    public GuiRow(String studentIdtext, String nameText, String courseText) { 
    this.setjRadioButton(new JRadioButton("")); 
    // TODO configure radio button 

    this.setStudentIdLabel(new JLabel(studentIdtext)); 
    this.setNameLabel(new JLabel(nameText)); 
    this.setCourseLabel(new JLabel(nameText)); 
    } 

    /** 
    * Get jRadioButton. 
    * 
    * @return jRadioButton 
    */ 
    public JRadioButton getjRadioButton() { 
    return this.jRadioButton; 
    } 

    /** 
    * Set jRadioButton. 
    * 
    * @param jRadioButton 
    */ 
    public void setjRadioButton(JRadioButton jRadioButton) { 
    this.jRadioButton = jRadioButton; 
    } 

    /** 
    * Get studentIdLabel. 
    * 
    * @return studentIdLabel 
    */ 
    public JLabel getStudentIdLabel() { 
    return this.studentIdLabel; 
    } 

    /** 
    * Set studentIdLabel. 
    * 
    * @param studentIdLabel 
    */ 
    public void setStudentIdLabel(JLabel studentIdLabel) { 
    this.studentIdLabel = studentIdLabel; 
    } 

    /** 
    * Get nameLabel. 
    * 
    * @return nameLabel 
    */ 
    public JLabel getNameLabel() { 
    return this.nameLabel; 
    } 

    /** 
    * Set nameLabel. 
    * 
    * @param nameLabel 
    */ 
    public void setNameLabel(JLabel nameLabel) { 
    this.nameLabel = nameLabel; 
    } 

    /** 
    * Get courseLabel. 
    * 
    * @return courseLabel 
    */ 
    public JLabel getCourseLabel() { 
    return this.courseLabel; 
    } 

    /** 
    * Set courseLabel. 
    * 
    * @param courseLabel 
    */ 
    public void setCourseLabel(JLabel courseLabel) { 
    this.courseLabel = courseLabel; 
    } 
} 

Dies ist ein einfaches Objekt zu erstellen und eine Zeile in Ihrem Container zu organisieren (wahrscheinlich JPanel, nicht wahr?)

Wenn Sie Parsen der resultset Sie müssen Erstellen Sie eine Liste solcher Objekte und fügen Sie die Daten dort hinzu.

Hier ist ein einfaches Beispiel dafür, wie die Daten zu analysieren und anzuzeigen, die Sie in zwei oder mehr Methoden aufteilen und sie in den entsprechenden Einheiten platzieren:

int resultsetSize = resultset.getFetchSize(); 

//init the list 
List<GuiRow> guiRowList = new ArrayList<GuiRow>(resultsetSize); 
while (resultset.next()) { 
    //get the column values 
    String id = resultset.getString("studentId"); 
    String name = resultset.getString("studentName"); 
    String course = resultset.getString("course"); 
    //create the the entry 
    GuiRow guiRow = new GuiRow(id, name, course); 
    //add it to the list 
    guiRowList.add(guiRow); 
} 

//now that you have a nice list of rows add them one by one to the container 
JPanel container = new JPanel(new GridLayout(resultsetSize, 4)); 
//further container configuration could be done here ... 

for (GuiRow row : guiRowList) { 
    container.add(row.getjRadioButton()); 
    container.add(row.getStudentIdLabel()); 
    container.add(row.getNameLabel()); 
    container.add(row.getCourseLabel()); 
}