elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 23:40  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Problema Con Selección De Fila En Jtable Y Evento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema Con Selección De Fila En Jtable Y Evento  (Leído 1,057 veces)
ZedGe

Desconectado Desconectado

Mensajes: 110


Ver Perfil
Problema Con Selección De Fila En Jtable Y Evento
« en: 24 Noviembre 2011, 04:09 »

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...

Código:
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 Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #1 en: 24 Noviembre 2011, 04:15 »

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 Desconectado

Mensajes: 110


Ver Perfil
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #2 en: 24 Noviembre 2011, 04:53 »

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
RyogiShiki


Desconectado Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #3 en: 24 Noviembre 2011, 16:03 »

Eso es algo más o menos complicado de hacer.lo que necesitas es implementar un ListSelectionListener Aquí un ejemplo: http://www.java2s.com/Code/Java/Swing-JFC/ListeningforSelectionEventsinaJTableComponent.htm

No sabría decirte como hacerlo exactamente ya que nunca he tenido la necesidad de usar uno de esos.

Saludos
En línea

ZedGe

Desconectado Desconectado

Mensajes: 110


Ver Perfil
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #4 en: 24 Noviembre 2011, 16:21 »

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 Desconectado

Mensajes: 110


Ver Perfil
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #5 en: 24 Noviembre 2011, 17:42 »

testeen este codigo..... creo que aqui esta la solucion tengo que adaptarlo nada mas =D

Código:
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 Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #6 en: 24 Noviembre 2011, 17:48 »

Así es, funciona bastante bien. Una buena solución hacerlo con MouseEvents, más simple.

Saludos
En línea

Leyer
Moderador
***
Desconectado Desconectado

Mensajes: 772


[]


Ver Perfil WWW
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #7 en: 24 Noviembre 2011, 18:08 »

que tal asi?
Código
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 Desconectado

Mensajes: 110


Ver Perfil
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #8 en: 24 Noviembre 2011, 18:21 »

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
Moderador
***
Desconectado Desconectado

Mensajes: 772


[]


Ver Perfil WWW
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #9 en: 24 Noviembre 2011, 18:30 »

si no precionas enter no funciona :xD :xD :xD
« Última modificación: 24 Noviembre 2011, 18:33 por Leyer » En línea

ZedGe

Desconectado Desconectado

Mensajes: 110


Ver Perfil
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #10 en: 24 Noviembre 2011, 18:36 »

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

Código:
  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 Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #11 en: 24 Noviembre 2011, 18:46 »

si no precionas enter no funciona :xD :xD :xD

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
Moderador
***
Desconectado Desconectado

Mensajes: 772


[]


Ver Perfil WWW
Re: Problema Con Selección De Fila En Jtable Y Evento
« Respuesta #12 en: 24 Noviembre 2011, 18:57 »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines