usar una tabla sirve setvalueat sea que pueda para modificar hacer getrowcount funciona editar editable datos como boton agregar java jtable

una - jtable java como usar



Hacer una celda en una tabla J editable: el valor predeterminado de la celda (2)

¿Está utilizando un TableCellEditor apropiado para mostrar el componente para editar?

class MyTableCellEditor extends DefaultCellEditor { @Override public Component getTableCellEditorComponent( JTable table, Object value, boolean isSelected, int row, int column) { final JTextField c = (JTextField) super.getTableCellEditorComponent( table, ((Cell) value).text, // edit the text field of Cell isSelected, row, column); c.selectAll(); // automatically select the whole string in the cell return c; } }

Tendrá que indicarle a su mesa que use este editor de celdas personalizado, además del renderizador de celdas personalizado.

myTable.setDefaultEditor(Cell.class, new MyTableCellEditor());

Estoy trabajando con Java, y estoy tratando de hacer que una celda en JTable sea editable. Mi clase implementa TableModel y extiende AbstractTableModel (para que pueda usar el método fireTableCellUpdated(rowIndex, columnIndex)) , y he implementado los métodos isCellEditable() y setValueAt() . Represento una sola celda en la tabla como un objeto de la clase Cell.

Ahora aquí está mi problema: la celda ya es editable, y cuando hago clic en ella, el cursor aparece en la celda, sin embargo, también aparece una cadena en la celda como esta: Cell@1e63e3d . Elimino esta cadena y coloco en la celda el valor que quiero poner, luego hago clic en Entrar y funciona bien. Pero quiero cuando hago clic en la celda para que no aparezca nada, una cadena vacía y no Cell@1e63e3d . Y no sé cómo configurar esta cadena vacía como predeterminada y dónde.

La clase My Cell almacena información (características) sobre el color de celda de la celda y su valor como variables de instancia.

Por favor, dime si necesitas más información.


¿Ha establecido un TableCellRenderer y TableCellEditor para su JTable ?

Para mostrar una celda , TableCellRenderer se usa para representar los contenidos de una ubicación desde TableModel . De forma predeterminada, usará el método toString del Object en esa ubicación, por lo que esto explicaría que Cell@1e63e3d se muestre en la celda; ese es el resultado del llamado al método toString en su objeto Cell .

Al escribir un renderizador de células personalizado (una clase que implementa TableCellRenderer ), podrá devolver un Component que quiera usar para mostrar el objeto Cell , utilizando el método getTableCellRendererComponent . En su caso, es posible que desee subclasificar un JLabel que implemente TableCellRenderer y establecerá el contenido de la etiqueta para reflejar el contenido de su objeto Cell .

En cuanto a la edición de una celda , el TableCellEditor recibe el Object de TableModel cuando se desea editar una celda con JTable . El TableCellEditor devolverá un Component que se utiliza para editar el contenido de la celda (el Object ) utilizando el método getTableCellEditorComponent .

En el caso que proporcione, creo que la creación de un JTextField que implemente la interfaz TableCellEditor podrá hacer el trabajo por usted. Cuando anula getTableCellEditorComponent , compruebe que tiene una instancia del objeto Cell (es decir, object instanceof Cell ) y, si ese es el caso, inicialice su JTextField para que contenga el contenido de su objeto Cell que desea visualizar o editar.

Lectura recomendada: Encontré las celdas de Rendering en el artículo del componente JTable de Swing de IBM developerWorks para ser bastante útil para aprender a manejar JTable s y sus funciones de renderizado y edición de celdas. En particular, las secciones Creando procesadores personalizados y Editando celdas de tabla pueden ser de interés.