Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problema con JTable

    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:
    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

    codice:
    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

    codice:
    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

    codice:
    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

  2. #2
    mi sono dimenticato l'immagine scusate

    Img

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.