Foros del Web » Programación para mayores de 30 ;) » Java »

uso del jtable

Estas en el tema de uso del jtable en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/05/2012, 16:34
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
uso del jtable

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.

Última edición por lucho248; 28/06/2012 a las 16:56

Etiquetas: clase, jtable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:39.