Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Problema con JTable
Forum - Java - Problema con JTable

Avatar
gradasso (Normal User)
Newbie


Messaggi: 1
Iscritto: 19/06/2011

Segnala al moderatore
Postato alle 16:15
Domenica, 19/06/2011
Salve a tutti, ho un problema e cercherò di essere il più preciso possibile.
Sto realizzando un client di posta elettronica con JAVA e per far ciò mi sono attrezzato di vari utili strumenti tutti freeware e molto potenti, elenchiamoli:
- Eclipse Elios
- Google WindowBuilder pro (plug-in per Eclipse che crea GUI), a mano era troppo laborioso
- JavaMail
- JAF (JavaBeans Activation Framework)
-ecc...

Il mio problema momentaneamente è molto semplice, se in futuro avessi altri problemi con i progetto lo descriverei qui... allora, io ho costruito la GUI, ho inserito uno splitpanel dove a sinistra ho inserito una JTable dove andrà la lista delle mail ricevute, a destra una text area dove sarà contenuto il testo della mail.
Il problema è che non riesco a visualizzare nella mia tabella i titoli delle colonne. Ho difatti 3 colonne: "Da", "Oggetto", "Data ricezione".
Ho provato a settare parecchie volte sia il tablemodel che altri parametri, ma niente.
Allego ora una porzione di codice.


Porzione di codice dove dichiaro lo splitpanel e la tabella
Codice sorgente - presumibilmente Java

  1. JSplitPane splitPane = new JSplitPane();
  2.                 splitPane.setDividerLocation(frame.getWidth()/2);
  3.                 frame.getContentPane().add(splitPane, BorderLayout.CENTER);
  4.                
  5.                
  6.                 //Setting della Tabella
  7.                
  8.                 String testaTabella []  = {"Da", "Oggetto", "Data di ricezione"};
  9.                 String nullTab [][] = {};
  10.                
  11.                 ModelloListaEmail corpoTab = new ModelloListaEmail(nullTab, testaTabella);
  12.                
  13.                 table = new JTable(corpoTab);
  14.                 splitPane.setLeftComponent(table);
  15.                
  16.                 JScrollPane scrollPane = new JScrollPane();
  17.                 splitPane.setRightComponent(scrollPane);
  18.                
  19.                 JTextArea textArea = new JTextArea();
  20.                 scrollPane.setViewportView(textArea);
  21.  
  22.                 SettaTabella();



classe per settare la tabella

Codice sorgente - presumibilmente Java

  1. public void SettaTabella()
  2.         {
  3.                 TableColumn colonnaTab;
  4.             JTableHeader headerTab;
  5.              
  6.                 colonnaTab = table.getColumnModel().getColumn(0);
  7.             colonnaTab.setCellRenderer(new FormattazioneTabella());
  8.             colonnaTab = table.getColumnModel().getColumn(1);
  9.             colonnaTab.setCellRenderer(new FormattazioneTabella());
  10.             colonnaTab = table.getColumnModel().getColumn(2);
  11.             colonnaTab.setCellRenderer(new FormattazioneTabella());
  12.              
  13.             headerTab = table.getTableHeader();
  14.             headerTab.setBackground(Color.lightGray);  
  15.            
  16.             table.setBorder(null);
  17.             table.setShowGrid(false);
  18.             table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
  19.            
  20.            
  21.            
  22.         }




il mio tableModel

Codice sorgente - presumibilmente Java

  1. import javax.swing.table.DefaultTableModel;
  2. import javax.mail.*;
  3.  
  4. public class ModelloListaEmail extends DefaultTableModel
  5. {
  6.        
  7.         /**
  8.          *
  9.          */
  10.         private static final long serialVersionUID = 1;
  11.        
  12.  
  13.         ModelloListaEmail(String[][] righe, String[] colonne)
  14.     {
  15.         super(righe, colonne);
  16.     }
  17.        
  18.  
  19.        
  20.     @Override
  21.     public boolean isCellEditable(int row, int col)
  22.     {
  23.         //return (col != 0);
  24.         return false;
  25.     }
  26.  
  27. }



ed infine la formattazione della tabella

Codice sorgente - presumibilmente Java

  1. import java.awt.*;
  2. import javax.swing.*;
  3. import javax.swing.table.*;
  4.  
  5. public class FormattazioneTabella extends DefaultTableCellRenderer
  6. {
  7.        
  8.         /**
  9.          *
  10.          */
  11.         private static final long serialVersionUID = 1;
  12.         Font font_1   = new Font("", Font.PLAIN, 12);
  13.        
  14.         public Color ColoreRigaSelezionata = new Color(234,227,227);
  15.        
  16.     public Component getTableCellRendererComponent (JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column)
  17.     {
  18.         Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
  19.        
  20.         if (isSelected)
  21.         {
  22.             cell.setBackground(ColoreRigaSelezionata);
  23.             cell.setFocusable(false);
  24.         }
  25.         else
  26.         {
  27.            /* if (row % 2 == 0)
  28.             {
  29.                 cell.setBackground(Color.orange);
  30.             }
  31.             else
  32.             {
  33.                 cell.setBackground(new Color(255,228,196));
  34.             } */
  35.         }
  36.        
  37.         switch (column)
  38.         {
  39.             case 0:
  40.                 setHorizontalAlignment( LEFT );
  41.                 setFont(font_1);
  42.                 break;
  43.            
  44.             case 1:
  45.                 setHorizontalAlignment( LEFT );
  46.                 setFont(font_1);
  47.                 break;
  48.            
  49.             case 2:
  50.                 setHorizontalAlignment( CENTER );
  51.                 setFont(font_1);
  52.                 break;
  53.         }
  54.         return cell;
  55.     }
  56. }



Posto anche l'immagine relativa che fa vedere che non si vede il titolo.
PS: ho provato a riempire la prima riga con 1,2 e 3 (un numero per ogni colonna) , i numeri si vedono ovviamente, ma dei titoli niente...

Grazie mille per aver letto, a presto


gradasso ha allegato un file: img.jpg (46581 bytes)
Clicca qui per guardare l'immagine
PM