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

    sort su una colonna di interi e su una di date

    salve a tutti, oggi ho il problema di ordinare una colonna di interi di una JTable.
    in pratica tutte le colonne che sono composte da stringhe vengono ordinate correttamente in base alla prima lettera a sinistra(come giusto che sia), la colonna degli interi si ordina nello stesso modo, prendendo la prima cifra di sinistra, e quindi non funziona..
    stessa cosa se nella colonna ci sono delle date..(es 12/08/07)
    come posso fare?
    ciao e grazie

  2. #2

  3. #3
    sono riuscito ad ordinare questa benedetta colonna di interi, mi ero dimenticato un metodo importante nel modello..
    codice:
    public Class getColumnClass(int c) {
                return getValueAt(0, c).getClass();
            }
    solo che adesso in questa colonna di interi ho perso il colore di sfondo..è normale?
    ciao e grazie

  4. #4
    salve amici, allora io non capisco perchè perdo lo sfondo di una colonna della mia JTable ed in particolare la colonna che mi ordina gli interi. vi posto le due classi..
    classe del model
    codice:
    class MyTableModel extends AbstractTableModel {
    		
         private String[] columnNames = {"Titolo", // titoli delle colonne
                                            "Autore",
                                            "Tipologia",
                                            "Nome file",
                                            "Mbyte",
                                            "Supporto",
                                            "Etichetta"};
                                            
           private Object[][] data;//matrice di oggetti
             
    	public MyTableModel(){
    		
    		
    		
    		temp =mt.trova();//metodo che mi raccoglie i dati dal database
    		this.data=new Object[temp.size()][7];
    		
    		for(int i=0;i<temp.size();i++){
    			
    		data[i][0]=((VoceDistributore)temp.get(i)).getTitolo();
    		data[i][1]=((VoceDistributore)temp.get(i)).getAutore();
    		data[i][2]=((VoceDistributore)temp.get(i)).getTipologia();
    		data[i][3]=((VoceDistributore)temp.get(i)).getNome_file();
    		data[i][4]=((VoceDistributore)temp.get(i)).getDimensione();
    		data[i][5]=((VoceDistributore)temp.get(i)).getSupporto();
    		data[i][6]=((VoceDistributore)temp.get(i)).getIdsupporto();
    				                  
    }}
    
            public int getColumnCount() {
               return columnNames.length;
            }
    
            public int getRowCount() {
                return data.length;
            }
    
            public String getColumnName(int col) {
                return columnNames[col];
            }
    
            public Object getValueAt(int row, int col) {
                return data[row][col];
            }
            
            //ordina la colonna di interi
            public Class getColumnClass(int c) {
                return getValueAt(0, c).getClass();
            }
    
            /*
             * questo metodo rende le celle editabili
             */
            public boolean isCellEditable(int row, int col) {
                
                return false;
               
            }
    
            /*
             * Aggiorna le celle
             * 
             */
            public void setValueAt(Object value, int row, int col) {
                
                data[row][col] = value;
                fireTableCellUpdated(row, col);
    
                
            }
    
            
        }
    [/quote]
    
    questa è la classe che mi fa il render dello sfondo tranne la colonna degli interi
    [quote]
     private class MyTableRenderer extends DefaultTableCellRenderer {
    
       private final Color ALTERNATE_COLOR = new Color(232,242,254);
      
       
    	public Component getTableCellRendererComponent(JTable table, Object value,
    		boolean isSelected, boolean hasFocus, int row, int column)
    	{
    		
    		Component original =super.getTableCellRendererComponent(
    			table, value, isSelected, hasFocus, row, column);
    			
    		//faccio lo sfondo una riga di un colore e una riga di un altro
    
    		Color background =
    			isSelected ?
    			table.getSelectionBackground() :
    			row % 2 == 0 ?
    			ALTERNATE_COLOR :
    			table.getBackground();
    		original.setBackground(background);
    		
    		return original;
    	}
    }
    come mai solo la colonna degli interi non mi visualizza lo sfondo?
    vi posso dire che questo mi è successo perchè ho aggiunto nel model questo metodo
    codice:
    public Class getColumnClass(int c) {
                return getValueAt(0, c).getClass();
            }
    infatti senza di esso lo sfondo è completo, però l'ordinamento degli interi non me lo fa correttamente.
    mi date una mano?ciao e grazie

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.