Oppure

Loading
19/06/11 14:15
gradasso
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

JSplitPane splitPane = new JSplitPane();
		splitPane.setDividerLocation(frame.getWidth()/2);
		frame.getContentPane().add(splitPane, BorderLayout.CENTER);
		
		
		//Setting della Tabella
		
		String testaTabella []  = {"Da", "Oggetto", "Data di ricezione"};
		String nullTab [][] = {};
		
		ModelloListaEmail corpoTab = new ModelloListaEmail(nullTab, testaTabella);
		
		table = new JTable(corpoTab);
		splitPane.setLeftComponent(table);
		
		JScrollPane scrollPane = new JScrollPane();
		splitPane.setRightComponent(scrollPane);
		
		JTextArea textArea = new JTextArea();
		scrollPane.setViewportView(textArea);

                SettaTabella();



classe per settare la tabella


public void SettaTabella()
	{
		TableColumn colonnaTab;
	    JTableHeader headerTab;
	      
		colonnaTab = table.getColumnModel().getColumn(0);
	    colonnaTab.setCellRenderer(new FormattazioneTabella());
	    colonnaTab = table.getColumnModel().getColumn(1);
	    colonnaTab.setCellRenderer(new FormattazioneTabella());
	    colonnaTab = table.getColumnModel().getColumn(2);
	    colonnaTab.setCellRenderer(new FormattazioneTabella());
	      
	    headerTab = table.getTableHeader();
	    headerTab.setBackground(Color.lightGray);  
	    
	    table.setBorder(null);
	    table.setShowGrid(false);
	    table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 
	    
	    
	    
	}




il mio tableModel


import javax.swing.table.DefaultTableModel;
import javax.mail.*;

public class ModelloListaEmail extends DefaultTableModel 
{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1;
	

	ModelloListaEmail(String[][] righe, String[] colonne) 
    {
        super(righe, colonne);
    }
	

	
    @Override
    public boolean isCellEditable(int row, int col) 
    {
    	//return (col != 0);
    	return false;
    }

}




ed infine la formattazione della tabella


import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class FormattazioneTabella extends DefaultTableCellRenderer
{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1;
	Font font_1   = new Font("", Font.PLAIN, 12);
	
	public Color ColoreRigaSelezionata = new Color(234,227,227);
	
    public Component getTableCellRendererComponent (JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column)
    {
        Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, column);
        
        if (isSelected)
        {
            cell.setBackground(ColoreRigaSelezionata);
            cell.setFocusable(false);
        }
        else
        {
           /* if (row % 2 == 0)
            { 
                cell.setBackground(Color.orange);
            }
            else
            {
                cell.setBackground(new Color(255,228,196));
            } */
        }
        
        switch (column)
        {
            case 0:
                setHorizontalAlignment( LEFT );
                setFont(font_1);
                break;
            
            case 1:
            	setHorizontalAlignment( LEFT );
                setFont(font_1);
                break;
            
            case 2:
            	setHorizontalAlignment( CENTER );
                setFont(font_1);
                break;
        }
        return cell;
    }
}



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
aaa