Premesso che ho letto i tutorial sul sito sun.
Ho una JTable, e in alcune colonne voglio avere dei JTextfield editabili.
Ho creato un tablemodel.
Facendo partire il programma, la Jtextfield appare normale, ma non appena ci clicco viene fuori la stringa del tipo.
E' modificabile ma non capisco il perchè di questo comportamento.
Le jtextfield se non erro hanno un editor di default che ho usato.
Allego il model table e il mio jtextfield e
codice:public class DatiUIModelTable extends AbstractTableModel { public JTextField prova = new JTextField(); private JLabel[] columnNames = { new JLabel("Identificatore"), new JLabel("Categoria"), new JLabel("Destinazione"), new JLabel("Metratura (in mq)"), new JLabel("Posizione interna"), new JLabel("Proprietario"), new JLabel("Quota"), }; private Object[][] data = { {prova, new JTextField(), new JComboBox(), new JTextField(), new JTextField(), new JComboBox(), new JTextField()}}; public int getColumnCount() { return columnNames.length; } public int getRowCount() { return 1; } public String getColumnName(int col) { return columnNames[col].getText(); } public Object getValueAt(int row, int col) { return data[row][col]; } public Class<?> getColumnClass(int c) { return getValueAt(0, c).getClass(); } /* * Don't need to implement this method unless your table's * editable. */ public boolean isCellEditable(int row, int col) { return true; } public void setValueAt(Object value, int row, int col) { if(col==0){ prova.setText(value.toString()); } if(col != 2 && col != 5) { data[row][col] = value.toString(); } else{data[row][col] = value;} fireTableCellUpdated(row, col); } /** * @return the data */ public Object[][] getData() { return data; } }codice:public class TextFieldRenderer extends JTextField implements TableCellRenderer{ JTextField txf = null; public TextFieldRenderer() { txf=new JTextField(); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { if (value instanceof String) { String s = (String) value; txf.setText(s); return txf; } return txf; } }

Rispondi quotando