2017-04-13 1 views
0

Ich versuche, ein Symbol in einer bestimmten Spalte abhängig von einer Bedingung zu setzen, aber alle erhalten ist der Link des Bildes.Wie setze ich ein Symbol in einer J-Tabelle beim Füllen der Tabelle?

Das ist, wie in der Tabelle Code initiiert:

DefaultTableModel model = new DefaultTableModel() { 

    @Override 
    public boolean isCellEditable(int row, int column) { 
     return false; 
    } 

    @Override 
    public Class<?> getColumnClass(int column) { 
     switch (column) { 
      case 0: 
      case 1: 
       return Integer.class; 
      case 2: 
       return ImageIcon.class; 
      default: 
       return Object.class; 
     } 
    } 
}; 

Und dann fülle ich die Tabelle aus meiner Datenbank Abhängigkeit von einer Bedingung (Fertig noch nicht begonnen - und in progress):

model.addColumn("Phases"); 
    model.addColumn("Date de début estimée(aaaa/mm/jj)"); 
    model.addColumn("Date de début réelle(aaaa/mm/jj)"); 
    model.addColumn("Date de fin estimée(aaaa/mm/jj)"); 
    model.addColumn("Date de fin réelle(aaaa/mm/jj)"); 
    model.addColumn("Status"); 
    model.addColumn("Tendance"); 

    ArrayList<String> name = new ArrayList<String>(); 
    ArrayList<String> last_name = new ArrayList<String>(); 

    String status = null; 
    String tendance = null; 
    byte[] Image = null; 

    // ImageIcon image2 = new ImageIcon("C:\\Users\\badr\\Documents\\NetBeansProjects\\UPLINE_GROUP\\src\\upline_group\\Ok-48.png"); 

    Date estimated_end_date = null; 
    Date real_end_date = null; 

    try { 
     String sql = "select * from task WHERE id_project='" + id_project1 + "' ORDER BY nom_task ASC"; 
     PST = conn.prepareStatement(sql); 
     RS = PST.executeQuery(); 

     while (RS.next()) { 
      try { 
       String sql2 = "select * from image "; 
       PST2 = conn2.prepareStatement(sql2); 
       RS2 = PST2.executeQuery(); 

       while (RS2.next()) { 

        if (RS.getString("real_start_date") == null && RS.getString("real_end_date") == null) { 
         status = "0(Non Démarrée)"; 
         //tendance = "0(Non Démarrée)"; 
         Image = RS2.getBytes("non"); 
        } 
        if (RS.getString("real_start_date") != null && RS.getString("real_end_date") == null) { 
         status = "1(en cours)"; 
         // tendance = "1(en cours)"; 
         Image = RS2.getBytes("cours"); 
        } 
        if (RS.getString("real_end_date") != null) { 
         status = "2(Terminé)"; 
         // tendance = "2(Terminé)"; 
         Image = RS2.getBytes("fini"); 
        } 

       } 
      } catch (Exception e) { 
       System.err.println(e); 
      } 

      estimated_end_date = RS.getDate("estimated_end_date"); 
      real_end_date = RS.getDate("real_end_date"); 
      model.addRow(new Object[]{RS.getString("nom_task"), RS.getDate("estimated_start_date"), RS.getDate("real_start_date"), estimated_end_date, real_end_date, status,Image}); 

     } 
    } catch (Exception e) { 
     System.err.println(e); 
    } 
    jTable1.setModel(model); 
+0

Variablennamen sollten NICHT mit einem Großbuchstaben beginnen. – camickr

Antwort

2

aber alle bekommen, ist die Verbindung des Bildes:

Dann das heißt, Sie sind Text in dieser Spalte speichern.

Sie haben ein paar Probleme, die ich sehen kann:

Sie Code versucht, ein Bild zu lesen, aber Sie müssen eine ImageIcon im TableModel speichern. So müssen Sie Ihre addRow(...) Anweisung ändern zu verwenden:

addRow(..., new ImageIcon(image)); 

So fügen Sie jeden Wert in der Reihenfolge, wie sie in der Tabelle angezeigt werden sollen.

Wenn Sie die obige Anweisung reparieren, sieht es so aus, als ob das Symbol der 6. Parameter der addRow(...)-Anweisung wäre. Gemäß Ihrer getColumnClass(...) Methode befindet sich das Symbol jedoch in der Spalte 2. Sieht das nicht seltsam aus?

+0

danke ich weiß nicht, wie ich das verpasst habe! es funktioniert jetzt ! –

Verwandte Themen