Autor
|
Tema: Problema Con Selección De Fila En Jtable Y Evento (Leído 15,443 veces)
|
ZedGe
Desconectado
Mensajes: 154
|
El problema es que tengo una tabla, de 1 fila y 5 columnas, hice que al apretar 1 elemento se seleccione la fila completa, y ademas que no lo editen. El "PROBLEMA" es que no logro por ejemplo, que los datos de la fila seleccionada aparezcan no se, en un jlabel o un textfield en la parte de abajo, intente con algunos SYSTEM para ver que variable contenía la selección y nada. Espero me entiendan adjunto mi codigo... import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel;
public class pru extends JFrame{ public pru() {
JTable tblEjemplo = new JTable(); JScrollPane scpEjemplo= new JScrollPane(); //Llenamos el modelo DefaultTableModel dtmEjemplo = new DefaultTableModel(getFilas(), getColumnas());
tblEjemplo=new JTable(dtmEjemplo){ public boolean isCellEditable(int rowIndex, int vColIndex) { return false; }}; //return false: Desabilitar edición de celdas. tblEjemplo.setModel(dtmEjemplo); scpEjemplo.add(tblEjemplo); this.add(scpEjemplo); this.setSize(500, 200); scpEjemplo.setViewportView(tblEjemplo); }
//Datos de las filas private Object[][] getFilas() { Object fila[][]=new Object[][] { {"a1", "b1", "c1", "d1", "a"}, {"a2", "b2", "c2", "d2","a"}, {"a3", "b3", "c3", "d3","a"}}; return fila; }
//Encabezados de la tabla private String[] getColumnas() { String columna[]=new String[]{"A","B","C", "D", "E"}; return columna; }
public static void main(String args[]) { pru obj = new pru(); obj.setVisible(true); } }
|
|
|
En línea
|
|
|
|
RyogiShiki
Desconectado
Mensajes: 745
げんしけん - Hikkikomori FTW!!!
|
Pues lo acabo de probar y no he tenido problemas, los datos aparecen normal. Si este no es el problema por favor explícate mejor. Saludos
|
|
« Última modificación: 24 Noviembre 2011, 04:18 am por RyogiShiki »
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 154
|
El programa lo que ahce es al poner 1 celda se selecciona toda la fila... lo que quiero es que al seleccionarla abajo de la tabla donde no hay nada exista un text field o un jlabel que imprima los datos de la fila seleccionada
|
|
|
En línea
|
|
|
|
|
ZedGe
Desconectado
Mensajes: 154
|
ok gracias lo vere haber si se puede hacer algo...
Lo que quiero hacer es que ingrese un datos en un jlabel y los busque y lo muestre en un Jtable.
Y en caso de que hallan unos 4 al seleccionar 1 de esos esa misma info salga en un jtextfield abajo. Intente en vez de un Jtable, un jlabel gigante pero me salian descuadradas los datos por que necesitaban un orden como:
Código Cantidad Nombre 4454544 21 Producto 1 4545454545 246 Producto 2
al tener un codigo ams grande o mayor cantidad quedaba todo desconfigurado
|
|
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 154
|
testeen este codigo..... creo que aqui esta la solucion tengo que adaptarlo nada mas =D package puntodeventa;
import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel;
/** * * @author beastieux */ public class pr extends JFrame {
private JTable tblEjemplo; private JScrollPane scpEjemplo; private DefaultTableModel dtmEjemplo;
public pr() {
tblEjemplo = new JTable(); scpEjemplo= new JScrollPane();
//Llenamos el modelo dtmEjemplo = new DefaultTableModel(getFilas(), getColumnas());
tblEjemplo.setModel(dtmEjemplo); scpEjemplo.add(tblEjemplo); this.add(scpEjemplo); this.setSize(500, 200); scpEjemplo.setViewportView(tblEjemplo);
setEventoMouseClicked(tblEjemplo);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); }
//Datos de las filas private Object[][] getFilas() { Object fila[][]=new Object[][] { {"a1", "b1", "c1", "d1"}, {"a2", "b2", "c2", "d2"}, {"a3", "b3", "c3", "d3"}}; return fila; }
//Encabezados de la tabla private String[] getColumnas() { String columna[]=new String[]{"A","B","C", "D"}; return columna; }
private void setEventoMouseClicked(JTable tbl) { tbl.addMouseListener(new java.awt.event.MouseAdapter() {
@Override public void mouseClicked(MouseEvent e) { tblEjemploMouseClicked(e); } }); }
private void tblEjemploMouseClicked(java.awt.event.MouseEvent evt) {
String cadena="";
int row = tblEjemplo.rowAtPoint(evt.getPoint()); if (row >= 0 && tblEjemplo.isEnabled()) { for (int i=0; i < tblEjemplo.getColumnCount();i++) { cadena=cadena + " " + dtmEjemplo.getValueAt(row,i).toString(); } }
JOptionPane.showMessageDialog(null, cadena); }
public static void main(String args[]) { pr obj = new pr(); obj.setVisible(true); } }
|
|
|
En línea
|
|
|
|
RyogiShiki
Desconectado
Mensajes: 745
げんしけん - Hikkikomori FTW!!!
|
Así es, funciona bastante bien. Una buena solución hacerlo con MouseEvents, más simple.
Saludos
|
|
|
En línea
|
|
|
|
Leyer
Desconectado
Mensajes: 786
leyer@elhacker.net
|
que tal asi? import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableModel; private static final long serialVersionUID = 1L; public pru(){ textField.addKeyListener(this); textField.setText("Dato a buscar"); panel.add(jScrollPane); textArea.setEnabled(false); textArea.setEditable(false); //Llenamos el modelo private static final long serialVersionUID = 1L; public boolean isCellEditable(int rowIndex, int vColIndex) { return false; }}; //return false: Desabilitar edición de celdas. table.setModel(dtmEjemplo); table.addMouseListener(this); // table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); scpEjemplo.add(table); this.add(panel2); this.add(panel); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(500, 400); scpEjemplo.setViewportView(table); } //Datos de las filas private Object[][] getFilas (){ {"a1", "b1", "c1", "d1", "a"}, {"a2", "b2", "c2", "d2","a"}, {"a3", "b3", "c3", "d3","a"}, {"a1", "b1", "c1", "d1", "a"}, {"a2", "b2", "c2", "d2","a"}, {"a3", "b3", "c3", "d3","a"}, {"a3", "b3", "c3", "d3","b"}}; return fila; } public void search (String data ) { textArea.setText(""); int numberOfRows = table.getRowCount(); for (int row = 0; row < numberOfRows; row++) { for(int column=0;column<table.getColumnCount();column++){ if (temp.equalsIgnoreCase(data)) { table.changeSelection(row,0,false,true); int[] rows = table.getSelectedRows(); for(row=0;row<rows.length;row++){ for(column=0;column<table.getColumnCount();column++){ val+=table.getValueAt(rows[row], column)+" "; } val+="\n"; } textArea.append(val); break; } } } } //Encabezados de la tabla private String[] getColumnas (){ return columna; } public static void main (String args []) { @Override public void run() { pru obj = new pru(); obj.setVisible(true); } }); } @Override if(arg0. getKeyCode() ==KeyEvent. VK_ENTER)search (textField. getText()); } @Override public void keyReleased (KeyEvent arg0 ) {} @Override public void keyTyped (KeyEvent arg0 ) {} @Override int[] rows = table.getSelectedRows(); textArea.setText(""); for(int row=0;row<rows.length;row++){ for(int column=0;column<table.getColumnCount();column++){ val+=table.getValueAt(rows[row], column)+" "; } val+="\n"; } //System.out.println(val); textArea.append(val); } @Override // TODO Auto-generated method stub } @Override // TODO Auto-generated method stub } @Override // TODO Auto-generated method stub } @Override // TODO Auto-generated method stub } }
|
|
« Última modificación: 24 Noviembre 2011, 19:09 pm por Leyer »
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 154
|
No me funciona tu codigo, osea selecciona la fila y todo pero el evento no me funciona..
también estoy intentado lograr que las columnas tengan anchos diferentes y no me sale :S es re dificil trabajar con jtable pero era la unica opcion que tenia
|
|
|
En línea
|
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[?] JTable Seleccion de Filas Mediante Codigo. (Solucionado)
Java
|
AlbertoBSD
|
2
|
17,382
|
26 Febrero 2009, 17:48 pm
por AlbertoBSD
|
|
|
Seleccionar fila en un datagrid y modificar la seleccion en otro form
.NET (C#, VB.NET, ASP)
|
RichardBoy
|
0
|
5,651
|
12 Febrero 2010, 22:42 pm
por RichardBoy
|
|
|
Eliminar Fila De Jtable(Jtabla Sin Model)
Java
|
ZedGe
|
4
|
5,428
|
29 Noviembre 2011, 23:35 pm
por ZedGe
|
|
|
Evento onfocus en fila de una tabla
« 1 2 »
Desarrollo Web
|
M3LiNdR1
|
11
|
13,334
|
26 Enero 2013, 17:20 pm
por alister
|
|
|
Cómo seleccionar una fila de un JTable de Java
Java
|
soy_nicanor
|
5
|
10,759
|
22 Enero 2015, 22:48 pm
por Usuario Invitado
|
|