Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware
Autor
|
Tema: Problema Con Selección De Fila En Jtable Y Evento (Leído 1,057 veces)
|
ZedGe
Desconectado
Mensajes: 110
|
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: 708
げんしけん - 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 por RyogiShiki »
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 110
|
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: 110
|
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: 110
|
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: 708
げんしけん - Hikkikomori FTW!!!
|
Así es, funciona bastante bien. Una buena solución hacerlo con MouseEvents, más simple.
Saludos
|
|
|
|
|
En línea
|
|
|
|
|
Leyer
|
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; public class pru extends JFrame implements KeyListener,MouseListener{ private static final long serialVersionUID = 1L; private JTable table = new JTable(); private JTextField textField=new JTextField(10); private JTextArea textArea =new JTextArea(); public pru(){ this.setLayout(new GridLayout(2,0)); textField.addKeyListener(this); textField.setText("Dato a buscar"); JScrollPane scpEjemplo= new JScrollPane(); JPanel panel=new JPanel(new GridLayout()); JScrollPane jScrollPane=new JScrollPane(textArea); panel.add(jScrollPane); textArea.setEnabled(false); textArea.setEditable(false); //Llenamos el modelo DefaultTableModel dtmEjemplo = new DefaultTableModel(getFilas(), getColumnas()); table=new JTable(dtmEjemplo){ 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); JPanel panel2=new JPanel(new BorderLayout()); panel2.add(textField,BorderLayout.NORTH); panel2.add(scpEjemplo,BorderLayout.CENTER); 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(){ Object fila[][]=new Object[][] { {"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++){ String temp = (String) table.getValueAt(row, column); if (temp.equalsIgnoreCase(data)) { table.changeSelection(row,0,false,true); int[] rows = table.getSelectedRows(); String val=""; for(row=0;row<rows.length;row++){ for(column=0;column<table.getColumnCount();column++){ val+=table.getValueAt(rows[row], column)+" "; } val+="\n"; } System.out.println(val); textArea.append(val); break; } } } } //Encabezados de la tabla private String[] getColumnas(){ String columna[]=new String[]{"A","B","C", "D", "E"}; return columna; } public static void main(String args[]) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { pru obj = new pru(); obj.setVisible(true); } }); } @Override public void keyPressed(KeyEvent arg0) { if(arg0.getKeyCode() ==KeyEvent.VK_ENTER)search(textField.getText()); } @Override public void keyReleased(KeyEvent arg0) {} @Override public void keyTyped(KeyEvent arg0) {} @Override public void mouseClicked(MouseEvent arg0) { int[] rows = table.getSelectedRows(); String val=""; 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 public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } }
|
|
|
|
« Última modificación: 24 Noviembre 2011, 19:09 por Leyer »
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 110
|
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
|
|
|
|
|
Leyer
|
|
|
|
|
« Última modificación: 24 Noviembre 2011, 18:33 por Leyer »
|
En línea
|
|
|
|
ZedGe
Desconectado
Mensajes: 110
|
xD Gracias Amigo De Todas formas el codigo que envie yo tambien funciona al 100% ese de apretar y que salga un popup o algo así (ventana emergente), si a alguien ls sirve aquí el código para deerminar el ancho de una columna tuJTable.getColumnModel().getColumn(0).setResizable(false);//esto para que no se pueda editar el anocho manualmente tuJTable.getColumnModel().getColumn(0).setPreferredWidth(500); // 500 es el tamaño de la columna, aun que pongas 1 el tamaño no sera casi invisible, ya que viene uno predeterminado
xD
|
|
|
|
|
En línea
|
|
|
|
RyogiShiki
Desconectado
Mensajes: 708
げんしけん - Hikkikomori FTW!!!
|
Wow no he visto el código bien, pero a penas busco un dato Bum! Loop infinito! XD. Solo aviso. --EDIT-- Solo da problemas al buscar el dato d3. --EDIT 2-- El problema solo se dá cuando recorro la lista varias veces y busco un dato. Es en reaidad un problema algo dificil de reproducir. Saludos
|
|
|
|
« Última modificación: 24 Noviembre 2011, 18:55 por RyogiShiki »
|
En línea
|
|
|
|
|
Leyer
|
Wow no he visto el código bien, pero a penas busco un dato Bum! Loop infinito! XD. Solo aviso. --EDIT-- Solo da problemas al buscar el dato d3. --EDIT 2-- El problema solo se dá cuando recorro la lista varias veces y busco un dato. Es en reaidad un problema algo dificil de reproducir.
Saludos
cierto, era el ListSelectionListener que le habia colocado
|
|
|
|
« Última modificación: 24 Noviembre 2011, 19:16 por Leyer »
|
En línea
|
|
|
|
|
| Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
fila impar, un color, fila par, otro color...
PHP
|
The Sixth Halcon
|
5
|
1,154
|
25 Marzo 2007, 12:23
por дٳŦ٭
|
|
|
[?] JTable Seleccion de Filas Mediante Codigo. (Solucionado)
Java
|
AlbertoBSD
|
2
|
5,611
|
26 Febrero 2009, 17:48
por AlbertoBSD
|
|
|
borrar fila conociendo primer palabra de la fila(solucionado)
Scripting
|
flony
|
3
|
1,811
|
27 Noviembre 2009, 18:25
por Leo Gutiérrez.
|
|
|
Seleccionar fila en un datagrid y modificar la seleccion en otro form
.NET
|
RichardBoy
|
0
|
2,647
|
12 Febrero 2010, 22:42
por RichardBoy
|
|
|
Eliminar Fila De Jtable(Jtabla Sin Model)
Java
|
ZedGe
|
4
|
749
|
29 Noviembre 2011, 23:35
por ZedGe
|
|