Hola amigos, como estan?
abro este hilo para consultarles algo puntual, estoy trabajando con un jtable, la cargo con datos de mi BD, la carga funciona ok, agregado, eliminado y modificacion de la base y refrezco de la tabla tambien.
en el frame que utilizo le puse 3 JTables (CLIENTES, FACTURAS, ARTICULOS), lo que necesitaria saber es que evento puedo utilizar que al hacer click en una fila de cualquiera de las 3 tablas, me valla escribindo en un JTextField lo que selecciono.
va un poco de codigo de modelo:
///////////////////////////////
package UIServices.Enviados;
import java……
…..
public class ViewEnviados extends JFrame {
private BorderLayout layoutMain = new BorderLayout();
private JPanel panelCenter = new JPanel();
private JMenuBar menuBar …
….
//los JTables
private JTable jtArticulos = new JTable();
private JTable jtClientes = new JTable();
private JTable jtFactura = new JTable();
private JScrollPane scrollTabla;
//los DefaultTableModel
DefaultTableModel modelArt = new DefaultTableModel();
DefaultTableModel modelCli = new DefaultTableModel();
DefaultTableModel modelFact = new DefaultTableModel();
private DefaultTableCellRenderer alinearCentro, alinearDerecha, alinearIzquierda;
//aplico un filtro de filas en un metodo
private TableRowSorter<TableModel> modeloOrdenadoArticulo;
private TableRowSorter<TableModel> modeloOrdenadoCliente;
private TableRowSorter<TableModel> modeloOrdenadoFactura;
//en el JTextField quiero que vaya mostrando:
//Artículo: "artSeleccionado"; Factura: "facSeleccionada";Cliente: "cliSeleccionado."
private JTextField tfSeleccion = new JTextField();
private String artEnviar = "Artículo: ";
private String facEnviar = ";Factura: ";
private String cliEnviar = ";Cliente: ";
public ViewEnviados() {
try {
jbInit();
this.setVisible(true);
this.setLocation(50, 50);
this.autoFiltro();
this.setearEventosQueCapturanTeclaEnterYEscape();
} catch (Exception e) {
e.printStackTrace();
}
}
//CARGA TABLAS LISTA DE ARTICULOS
public void initTablaArticulos(){
jtArticulos.setModel(new DefaultTableModel(
new Object[][] { { null, null, null },
{ null, null, null }, { null, null, null },
{ null, null, null } }, new String[] { "Title 1",
"Title 2", "Title 3" }));
jtArticulos.setModel(modelArt);
scrollTabla = new JScrollPane(jtArticulos);
scrollTabla.setBounds(new Rectangle(15, 40, 330, 200));
modelArt.addColumn("Marca");
modelArt.addColumn("Modelo");
modelArt.addColumn("Categoría");
//FIJO EL ANCHO DE COLUMNA
jtArticulos.getColumn("Marca").setMinWidth(80);
jtArticulos.getColumn("Marca").setMaxWidth(120);
jtArticulos.getColumn("Modelo").setMinWidth(80);
jtArticulos.getColumn("Modelo").setMaxWidth(150);
jtArticulos.getColumn("Categoría").setMinWidth(100 );
//esto me limpia la tabla cada vez que hago un listado nuevo
modelArt.setRowCount(0);
List<Articulo>list = null;
list = ABMArticulo.findArtXModelo(list, "", "");
for (Articulo x : list) {
// agrego los datos con el addRow en el mismo orden en el que cree el objeto en el constructor
modelArt.addRow(new Object[] { x.getMarca(), x.getModelo(), x.getCategoria() });
}
JTableHeader header = jtArticulos.getTableHeader();
header.setBackground(Color.GRAY);
header.setForeground(Color.WHITE);
jtArticulos.setToolTipText("Seleccione un Artículo");
panelCenter.add(scrollTabla);
}
//CARGA TABLAS LISTA DE CLIENTES
public void initTablaClientes(){
jtClientes.setModel(new DefaultTableModel(
new Object[][] { { null, null, null }, { null, null, null },
{ null, null, null } }, new String[] { "Title 1",
"Title 2", "Title 3" }));
jtClientes.setModel(modelCli);
scrollTabla = new JScrollPane(jtClientes);
scrollTabla.setBounds(new Rectangle(10, 280, 724, 170));
modelCli.addColumn("Apellido");
modelCli.addColumn("Nombre");
modelCli.addColumn("Dirección");
modelCli.addColumn("Localidad");
modelCli.addColumn("Tel Fijo");
modelCli.addColumn("Tel Celular");
modelCli.addColumn("CP");
modelCli.addColumn("Sucursal");
//FIJO EL ANCHO DE LAS COLUMNAS
jtClientes.getColumn("Nombre").setMinWidth(80);
// jtClientes.getColumn("Nombre").setMaxWidth(130);
jtClientes.getColumn("Apellido").setMinWidth(80);
// jtClientes.getColumn("Apellido").setMaxWidth(130);
jtClientes.getColumn("Dirección").setMinWidth(100) ;
jtClientes.getColumn("Dirección").setMaxWidth(120) ;
jtClientes.getColumn("Localidad").setMinWidth(100) ;
jtClientes.getColumn("Localidad").setMaxWidth(120) ;
jtClientes.getColumn("Tel Fijo").setMinWidth(70);
// jtClientes.getColumn("Tel Fijo").setMaxWidth(130);
jtClientes.getColumn("Tel Celular").setMinWidth(70);
// jtClientes.getColumn("Tel Celular").setMaxWidth(130);
jtClientes.getColumn("CP").setMinWidth(40);
jtClientes.getColumn("CP").setMaxWidth(50);
jtClientes.getColumn("Sucursal").setMinWidth(80);
// jtClientes.getColumn("Sucursal").setMaxWidth(130);
//esto me limpia la tabla cada vez que hago un listado nuevo
modelCli.setRowCount(0);
List<Cliente>listCli = null;
listCli = ABMCliente.findCliXNombre(listCli, "");
for (Cliente x : listCli) {
//agrego los datos con el addRow en el mismo orden en el que cree el objeto en el constructor
modelCli.addRow(new Object[] { x.getApellido(), x.getNombre(), x.getDireccion(), x.getLocalidad(),
x.getTelefonoFijo(), x.getTelefonoCel(), x.getCodigoPostal(), x.getIdSucursal() });
}
JTableHeader header = jtClientes.getTableHeader();
header.setBackground(Color.GRAY);
header.setForeground(Color.WHITE);
jtClientes.setToolTipText("Seleccione un Cliente");
panelCenter.add(scrollTabla);
}
//CARGA TABLAS LISTA DE FACTURAS
public void initTablaFacturas(){
//seteo tipos de alineaciones
alinearCentro = new DefaultTableCellRenderer();
alinearCentro.setHorizontalAlignment(SwingConstant s.CENTER);
alinearDerecha = new DefaultTableCellRenderer();
alinearDerecha.setHorizontalAlignment(SwingConstan ts.RIGHT);
alinearIzquierda = new DefaultTableCellRenderer();
alinearIzquierda.setHorizontalAlignment(SwingConst ants.LEFT);
jtFactura.setModel(new DefaultTableModel(
new Object[][] { { null, null, null }, { null, null, null },
{ null, null, null } }, new String[] { "Title 1",
"Title 2", "Title 3" }));
jtFactura.setModel(modelFact);
scrollTabla = new JScrollPane(jtFactura);
scrollTabla.setBounds(new Rectangle(360, 40, 370, 200));
modelFact.addColumn("Fecha Compra");
modelFact.addColumn("Garantia Ext.");
modelFact.addColumn("Nro. Factura");
modelFact.addColumn("Nro. Garantía");
//esto me limpia la tabla cada vez que hago un listado nuevo
modelFact.setRowCount(0);
List<Factura>list = null;
list = ABMFactura.findFacXFecha(list, "");
for (Factura x : list) {
//agrego los datos con el addRow en el mismo orden en el que cree el objeto en el constructor
modelFact.addRow(new Object[] { x.getFechaCompra(),
x.getGarantiaExtendida(), x.getNroFactura(), x.getNroGarantia() });
}
jtFactura.getColumnModel().getColumn(0).setCellRen derer(alinearDerecha);
jtFactura.getColumnModel().getColumn(1).setCellRen derer(alinearCentro);
jtFactura.getColumnModel().getColumn(2).setCellRen derer(alinearIzquierda);
JTableHeader header = jtFactura.getTableHeader();
header.setBackground(Color.GRAY);
header.setForeground(Color.WHITE);
jtFactura.setToolTipText("Seleccione una Factura");
panelCenter.add(scrollTabla);
}
public static void main (String arg[]){
new ViewEnviados();
}
}
///////////////////////////////
que evento puedo utilizar, que al seleccionar una tabla por ejemplo:
hace click en la tabla de articulos haga:
tfSeleccion = artEnviar +jtArticulos.getSelectRow().getNomArt()+facEnviar+ ""+cliEnviar+"";
e ir concatenando dentro del jtexfield "tfSeleccion", la cadena de datos seleccionados.
Cualquier ayuda sera bienvenida.
Saludos y exitos.