tengo 3 archivos
1.clas persona:
Código Java:
Ver original
package Botones_con_Modelo2; import java.util.ArrayList; import javax.swing.JButton; /** * * @author Administrador */ public class Persona { this.codigo = codigo; this.nombre = nombre; this.apellido = apellido; this.boton = boton; } public Persona() { } return codigo; } this.codigo = codigo; } return nombre; } this.nombre = nombre; } return apellido; } this.apellido = apellido; } //Aqui llenamos la misma clase con los clientes return boton; } this.boton = boton; } }
Otro modelo Persona:
Código Java:
Ver original
import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.event.TableModelListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; /** * * @author Administrador */ private List<Persona> personas; final Class[] tiposColumnas = new Class[]{ }; Class[] tipos = tiposColumnas; public TMPersona(List<Persona> lista){ personas=lista; } @Override public int getRowCount() { return personas.size(); } @Override public int getColumnCount() { return 4; } @Override switch(columnIndex){ case 0:{ titulo="ID"; break; } case 1:{ titulo="Nombre"; break; } case 2:{ titulo="Apellido"; break; } case 3:{ titulo="boton"; break; } } return titulo; } @Override public Class<?> getColumnClass(int columnIndex) { //return String.class; if(columnIndex<=2){ } // return tiposColumnas[columnIndex]; } // // @Override // public Class getColumnClass(int columnIndex) { // // Este método es invocado por el CellRenderer para saber que dibujar en la celda, // // observen que estamos retornando la clase que definimos de antemano. // System.out.println(columnIndex+"="); // System.out.println(tipos[columnIndex].toString()); // return tipos[columnIndex]; // // // } // @Override public boolean isCellEditable(int rowIndex, int columnIndex) { if(columnIndex==0){ return false; }else{ return true; } } @Override //esta en al funcion que me dice el valor devuelto //devuele el valor de l tabla Persona p=personas.get(rowIndex); switch(columnIndex){ case 0:{ valor=p.getCodigo(); break; } case 1:{ valor=p.getNombre(); break; } case 2:{ valor=p.getApellido(); break; } } return valor; } @Override //si yo modifico de forma grafica se guardaran los cambios Persona p=personas.get(rowIndex); switch(columnIndex){ case 0:{ p.setCodigo(aValue.toString()); break; } case 1:{ p.setNombre(aValue.toString()); break; } case 2:{ p.setApellido(aValue.toString()); break; } } } @Override } @Override } }
bueno un jframe generado por el netbiens
Código Java:
Ver original
import java.awt.Component; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.List; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; /** * * @author Administrador */ private List<Persona> personas; private TMPersona modelo; /** * Creates new form ejemplo */ public ejemplo() { initComponents(); personas = new ArrayList<>(); modelo= new TMPersona(personas); tabla.setModel(modelo); // El objetivo de la siguiente línea es indicar el CellRenderer que será utilizado para dibujar el botón @Override /** * Observen que todo lo que hacemos en éste método es retornar el objeto que se va a dibujar en la * celda. Esto significa que se dibujará en la celda el objeto que devuelva el TableModel. También * significa que este renderer nos permitiría dibujar cualquier objeto gráfico en la grilla, pues * retorna el objeto tal y como lo recibe. */ } }); @Override int fila = tabla.rowAtPoint(e.getPoint()); int columna = tabla.columnAtPoint(e.getPoint()); /** * Preguntamos si hicimos clic sobre la celda que contiene el botón, si tuviéramos más de un botón * por fila tendríamos que además preguntar por el contenido del botón o el nombre de la columna */ /** * Aquí pueden poner lo que quieran, para efectos de este ejemplo, voy a mostrar * en un cuadro de dialogo todos los campos de la fila que no sean un botón. */ StringBuilder sb = new StringBuilder(); for (int i = 0; i < tabla.getModel().getColumnCount(); i++) { sb.append("\n").append(tabla.getModel().getColumnName(i)).append(": ").append(tabla.getModel().getValueAt(fila, i)); } } } } }); }
por favor necesito ayuda ya que esto esta haciendo que me demore en mi proyecto:
link de descarga del proyecto:
https://drive.google.com/file/d/0Bww10gp0erhtUXR2VHBtQ0RDeTQ/view