2016-04-07 4 views
-1

Wie kann ich den Wert meiner Swing-Steuerelemente wie JComboBox und JTextfields jedes Mal richtig ändern, wenn ich auf die Zellen meiner JTable klicke, die meine Daten sind? Was ich machen möchte, wenn es mehr als einen Datensatz gibt, der den gleichen Anfangsbuchstaben des Ichs hat. Wird der Wert jedes Mal geändert, wenn ich auf Basis der Zeilenposition klicke?Ändern Sie den Wert von JComboBox und JTextfield bei jedem Mausklick?

Screenshot

enter image description here

Als ich klickte einen der Werte in der JTable es zeigt den aktuellen Wert im JTextField und JComboBox aber Wenn ich einen Klick wieder hat es nicht ändern? Irgendeine Hilfe?

SELECT (zum Abrufen)

private void SearchButtonActionPerformed(java.awt.event.ActionEvent evt) { 
String searchSection = Section_SearchSection_Textfield.getText(); 

String searchSECTIONSETTINGS = "SELECT allsections_list.SECTION_ID, allsections_list.SECTION_NAME, allsections_settings.ADVISER_ASSIGNED, allsections_settings.SECTION_POPULIMIT, allsections_settings.ROOM_ASSGN,\n" + 
    "allsections_settings.YRLEVEL_ASSGN,allsections_settings.SCHOOL_YEAR,allsections_settings.SESSION_ASSIGNED\n" + 
    "FROM allsections_list\n" + 
    "RIGHT JOIN allsections_settings\n" + 
    "ON allsections_list.SECTION_ID = allsections_settings.SECTION_ID\n" + 
    "WHERE SECTION_NAME LIKE ?"; 

    try (Connection myConn = DBUtil.connect(); 
       PreparedStatement myFirstPs = myConn.prepareStatement(searchSECTIONSETTINGS);) 
       { 
        myFirstPs.setString(1, '%'+searchSection+'%'); 
       try (ResultSet myFirstRs = myFirstPs.executeQuery();) 
       { 
        sectionJTable.setModel(DbUtils.resultSetToTableModel(myFirstRs)); 
        int result = 0; 
        while (myFirstRs.next()) 
        { 
         String myName = myFirstRs.getString(2); 
         System.out.println(myName); 
         result++; 
        } 
     }//end of try myFirstRs (ResultSet) 
     }//end of try myFirstPs (PreparedStatement) 
} 

JTable (mouseClicked)

private void sectionJTableMouseClicked(java.awt.event.MouseEvent evt) { 
if (evt.getClickCount() == 1) { 
     final JTable target = (JTable)evt.getSource(); 
     final int row = target.getSelectedRow(); 
     final int column = target.getSelectedColumn(); 
     // Cast to ur Object type 
     Object value = target.getValueAt(row,column); 
     JOptionPane.showMessageDialog(null, value); 

String selectSections = "SELECT * FROM allsections_list a JOIN allsections_settings b ON b.SECTION_ID = a.SECTION_ID"; 

     try (Connection myConn = DBUtil.connect(); 
       PreparedStatement myPs = myConn.prepareStatement(selectSections);) 
     { 
      try (ResultSet myRs = myPs.executeQuery()) 
      { 
       int resultCounter = 0; 
       while(myRs.next()) 
       { 
        Section_SectionName_TextField.setText(myRs.getString("SECTION_NAME")); 
        Section_Student_Limit_ComboBox.setSelectedItem(myRs.getString("SECTION_POPULIMIT")); 
        Section_Room_Assignment_ComboBox.setSelectedItem(myRs.getString("ROOM_ASSGN")); 
        Section_Student_Limit_ComboBox1.setSelectedItem(myRs.getString("ADVISER_ASSIGNED")); 
        Section_Session_Settings_ComboBox.setSelectedItem(myRs.getString("SESSION_ASSIGNED")); 
        Section_Session_Level_ComboBox.setSelectedItem(myRs.getString("YRLEVEL_ASSGN")); 
        Section_SchooYear_ComboBox.setSelectedItem(myRs.getString("SCHOOL_YEAR")); 
        resultCounter++; 
       } 
      } 
     } 
} 

Wenn ich versuche System.out.print(myRs.getString("SECTION_NAME")); in meinem zweiten Ergebnis hinzufügen Legen Sie es druckt alle Werte meiner SECTION_NAME nicht die aktuelle, die ich ausgewählt habe.

+0

'JOptionPane.showMessageDialog (null, value);' Funktioniert diese Zeile nach dem zweiten Klick? – rdonuk

+0

@ ReşitDönük ja, es hat den Wert geändert, welche Zelle ich geklickt habe. Aber die JComoBox und Textfields werden nicht. Vielen Dank. – Francisunoxx

+0

Haben Sie versucht, 'myRs.getString ("SECTION_NAME") '' zu drucken? Gibt es den richtigen Wert zurück? – rdonuk

Antwort

1

Ich denke, ich habe das Problem gefunden:

while(myRs.next()) 
{ 
    Section_SectionName_TextField.setText(myRs.getString("SECTION_NAME")); 
    Section_Student_Limit_ComboBox.setSelectedItem(myRs.getString("SECTION_POPULIMIT")); 
    Section_Room_Assignment_ComboBox.setSelectedItem(myRs.getString("ROOM_ASSGN")); 
    Section_Student_Limit_ComboBox1.setSelectedItem(myRs.getString("ADVISER_ASSIGNED")); 
    Section_Session_Settings_ComboBox.setSelectedItem(myRs.getString("SESSION_ASSIGNED")); 
    Section_Session_Level_ComboBox.setSelectedItem(myRs.getString("YRLEVEL_ASSGN")); 
    Section_SchooYear_ComboBox.setSelectedItem(myRs.getString("SCHOOL_YEAR")); 
    resultCounter++; 
} 

In dem obigen Teil Sie alle Datensätze in einer while-Anweisung an die Ihre Komponenten setzen. Die Komponenten zeigen also nur den letzten Datensatz, in diesem Fall "Gold".

Aber tatsächlich gibt es keine Notwendigkeit, Datenbank in sectionJTableMouseClicked abzufragen. Sie können alle Werte von getValueAt abrufen und auf die Komponenten festlegen.

+0

Ich sehe das ist der Großteil des Teils, auf den ich den Fehler erhalte. Deshalb gibt es den letzten Wert zurück. Ich habe 'sectionJTableMouseClicked' verwendet, damit ich feststellen kann, welcher Wert ausgewählt ist, damit ich meine Datensätze einfach aktualisieren kann. Danke :) – Francisunoxx

+0

Also müssen Sie nur mit ausgewählter ID abfragen, oder nur die Daten von der JTable bekommen. – rdonuk

+0

Die Daten von der JTable holen, weil ich denke, dass dies der einfachste Weg ist, meinen Datensatz zu aktualisieren. Danke für die Antwort. – Francisunoxx