Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    55

    chek box in jtable per selezionare riga

    Salve ragazzi ho inserito in una colonna di una jtable dei chek box , non l'avevo mai fatto ho letto un po' di post precedenti , e ho creato un mio DefaultTableModel facendo l'overriding dei metodi getColumnClass e isCellEditable:

    codice:
    public class Mymodel extends DefaultTableModel{
        
        public Mymodel(){
            DefaultTableModel model = new DefaultTableModel(0, 0);
        }
        
        @Override
     public Class getColumnClass(int column)      
    {      
    return getValueAt(0, column).getClass();      
    }      
        
       
      @Override
       public boolean isCellEditable(int row,int col){
       if(col == 0){
          return true;
        }
       else{
          return false;
       } 
       
       
       
      }
    Poi creato un mio TableCellRenderer per la cella di tipo chek :

    codice:
    class MyCellRenderer implements TableCellRenderer {
    
          @Override
    public Component getTableCellRendererComponent(JTable table,      
    Object value,      
    boolean isSelected,      
    boolean hasFocus,      
    int row,      
    int column){      
      
    Component com = (Component)value;      
    return com; 
    
        }
        
    }
    Il risultato a video quando eseguo l'applicazione è quello che volevo , ma cliccando sul chek in jtable non esce il simbolo di spunta .

    esempio codice utilizzo della tabella :

    codice:
        Class.forName("com.mysql.jdbc.Driver");
                
                Connection con = DriverManager.getConnection(Global.connectionUrl);
                Statement st;
                String query;
                ResultSet rs;
                           
                st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    	    query="SELECT descrizione FROM desc_preventivi ";
                rs = st.executeQuery(query); 
                rs.first();
                
                Mymodel model = new Mymodel();
                table.setModel(model);
                table.setDefaultRenderer(Component.class, new MyCellRenderer());  
                model.addColumn("Check");
                model.addColumn("Descrizione");
    
                while(!rs.wasNull()){
                    Object [] d = { 
                   new javax.swing.JCheckBox(),rs.getString("descrizione")};
                rs.next();
                model.addRow(d);
                table.setShowVerticalLines(true);
                }
                
               rs.close();
               st.close();           
             } catch (SQLException e) {
                System.out.println("SQL Exception: "+ e.toString());
             } catch (ClassNotFoundException cE) {
                System.out.println("Class Not Found Exception: "+ cE.toString());
             }
    cosa devo aggiungere al mio codice cosa sbaglio?

  2. #2
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    Non vorrei dire stupidaggini a quest'ora, ma mi sembra che manchino i metodi getValueAt e setValueAt al TableModel...

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    55
    ahahh vai tra ;-) ti capisco l'orario è importante per queste cose :-D comunque quando ti svegli e ti senti meglio mi potresti spiegare meglio i metodi?

    Grazie tante

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Moderazione

    Più che altro, indipendentemente dall'orario, la lettura di quel codice diventa particolarmente difficoltosa perchè non hai usato, come richiesto dal regolamento interno, gli appositi tag CODE per mantenerne la formattazione...

    Li ho aggiunti io... anche se rimane il problema dell'indentazione, che non è che sia proprio il massimo...

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di progAnd
    Registrato dal
    Jan 2012
    Messaggi
    119
    http://docs.oracle.com/javase/6/docs...tml#getValueAt(int,%20int)
    http://docs.oracle.com/javase/6/docs...tml#setValueAt(java.lang.Object,%20int,%20int)
    Senza questi metodi le modifiche:
    a) non vengono registrate
    b) non vengono visualizzate

    Non so se manca altro...

    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    55
    Grazie sia a LeleFT per aver sistemato il mio post e scusami ma sinceramente nn l'avevo mai letto il regolamento :P e grazie anche a te naturalmente ! leggerò i tuoi link appena trovero' la soluzione la mettero' online per farla vedere ad altri nel caso in cui in futuro avranno il mio stesso problema!

    Ciaooo buona serata a tutti

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.