usar tablemodellistener setvalueat ejemplo como java string swing jtable listener

tablemodellistener - setvalueat jtable java



Java: JTable change listener, error "El objeto no se puede convertir a string" (1)

Your getTableModel().getValueAt(row, column); devuelve una referencia de objeto y no una cadena, pero la está asignando a una variable de cadena. Sus elecciones incluyen:

  • Puede lanzar lo que se devuelve a una Cadena, pero corre el riesgo de tener problemas si su conversión es incorrecta, si de hecho no es una Cadena.
  • O puede llamar a toString() en él. Aquí, si no es una Cadena, no obtendrá una excepción, pero la Cadena devuelta podría no ser la que desea usar. Sin embargo, se produce un problema si la variable es nula y se arriesga a una NullPointerException si no busca primero null. Recomiendo que vayas por esta ruta.
  • O, según Richard Walton , al utilizar String.valueOf() evitaría el problema de excepción nula de toString() . ¡Gracias, Richard!

Tengo una JTable y una clase que se supone que controla la respuesta del programa a varias acciones, la primera de las cuales estoy escribiendo es para un evento de cambio de célula.

Cada fila se genera a partir de un objeto Part , y la clase de columna de cada columna se establece de forma correspondiente.

Part(String partName, String make, String partNumber, String altPartNumber, Double price, Integer quantity, String description, Boolean isAutomotive, Boolean isMarine, Boolean isIndustrial) { //...code not shown... }

Los objetos de parte se almacenan en una ArrayList<Part> serializable ArrayList<Part> .

Esencialmente, lo que el código de manejo de eventos necesita hacer es actualizar el valor de un parámetro de un objeto en particular dentro de este ArrayList usando los datos actualizados obtenidos de JTable .

A continuación se muestra el código que demuestra cómo quiero hacer esto; aquí se produce el error mencionado en el título. ¿Alguien puede explicar cómo lidiar con este problema?

public class EventController extends UI implements TableModelListener { // Declarations: private int row; private int column; private Part partToChange; // ...Omitted for brevity... private String updatedName; private String updatedMake; private Integer updatedQuantity; // Don''t need declarations for the booleans, can just toggle them. @Override public void tableChanged(TableModelEvent e) { // Find out where the change took place... this.column = e.getColumn(); this.row = e.getFirstRow(); // Get the new value... // Send the new value to parts... partToChange = data.getPart(row); switch(column) { case 0: updatedName = getTableModel().getValueAt(row, column); // ERROR OCCURS HERE ^ partToChange.setName(updatedName); } } }