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:
Poi creato un mio TableCellRenderer per la cella di tipo chek :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; } }
Il risultato a video quando eseguo l'applicazione è quello che volevo , ma cliccando sul chek in jtable non esce il simbolo di spunta .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; } }
esempio codice utilizzo della tabella :
cosa devo aggiungere al mio codice cosa sbaglio?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()); }

Rispondi quotando