elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


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

Desconectado Desconectado

Mensajes: 154


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

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: 745


げんしけん - Hikkikomori FTW!!!


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

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 Desconectado

Mensajes: 154


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

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: 745


げんしけん - Hikkikomori FTW!!!


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

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: 154


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

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: 154


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

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: 745


げんしけん - Hikkikomori FTW!!!


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

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

Saludos
En línea

Leyer


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


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

que tal asi?
Código
  1. import java.awt.BorderLayout;
  2. import java.awt.GridLayout;
  3. import java.awt.event.KeyEvent;
  4. import java.awt.event.KeyListener;
  5. import java.awt.event.MouseEvent;
  6. import java.awt.event.MouseListener;
  7.  
  8. import javax.swing.JFrame;
  9. import javax.swing.JPanel;
  10. import javax.swing.JScrollPane;
  11. import javax.swing.JTable;
  12. import javax.swing.JTextArea;
  13. import javax.swing.JTextField;
  14. import javax.swing.SwingUtilities;
  15. import javax.swing.table.DefaultTableModel;
  16.  
  17. public class pru extends JFrame implements KeyListener,MouseListener{
  18. private static final long serialVersionUID = 1L;
  19. private JTable table = new JTable();
  20.    private JTextField textField=new JTextField(10);
  21.    private JTextArea textArea =new JTextArea();
  22.  
  23.    public pru(){
  24. this.setLayout(new GridLayout(2,0));
  25. textField.addKeyListener(this);
  26. textField.setText("Dato a buscar");
  27.        JScrollPane scpEjemplo= new JScrollPane();
  28.        JPanel panel=new JPanel(new GridLayout());
  29.        JScrollPane jScrollPane=new JScrollPane(textArea);
  30.        panel.add(jScrollPane);
  31.        textArea.setEnabled(false);
  32.        textArea.setEditable(false);
  33.        //Llenamos el modelo
  34.        DefaultTableModel dtmEjemplo = new DefaultTableModel(getFilas(), getColumnas());
  35.  
  36.        table=new JTable(dtmEjemplo){
  37. private static final long serialVersionUID = 1L;
  38. public boolean isCellEditable(int rowIndex, int vColIndex) {
  39.            return false;
  40.  
  41.        }}; //return false: Desabilitar edición de celdas.
  42.        table.setModel(dtmEjemplo);
  43.        table.addMouseListener(this);
  44.       // table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  45.        scpEjemplo.add(table);
  46.        JPanel panel2=new JPanel(new BorderLayout());
  47.        panel2.add(textField,BorderLayout.NORTH);
  48.        panel2.add(scpEjemplo,BorderLayout.CENTER);
  49.        this.add(panel2);
  50.        this.add(panel);
  51.        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  52.        this.setSize(500, 400);
  53.        scpEjemplo.setViewportView(table);
  54.    }
  55.    //Datos de las filas
  56.    private Object[][] getFilas(){
  57.         Object fila[][]=new Object[][] {
  58.                            {"a1", "b1", "c1", "d1", "a"},
  59.                            {"a2", "b2", "c2", "d2","a"},
  60.                            {"a3", "b3", "c3", "d3","a"},
  61.                            {"a1", "b1", "c1", "d1", "a"},
  62.                            {"a2", "b2", "c2", "d2","a"},
  63.                            {"a3", "b3", "c3", "d3","a"},
  64.         {"a3", "b3", "c3", "d3","b"}};
  65.         return fila;
  66.  
  67.    }
  68.    public void search(String data) {
  69.     textArea.setText("");
  70. int numberOfRows = table.getRowCount();
  71. for (int row = 0; row < numberOfRows; row++) {
  72. for(int column=0;column<table.getColumnCount();column++){
  73. String temp = (String) table.getValueAt(row, column);
  74. if (temp.equalsIgnoreCase(data)) {
  75. table.changeSelection(row,0,false,true);
  76. int[] rows = table.getSelectedRows();
  77. String val="";
  78. for(row=0;row<rows.length;row++){
  79. for(column=0;column<table.getColumnCount();column++){
  80. val+=table.getValueAt(rows[row], column)+"                    ";
  81. }
  82. val+="\n";
  83. }
  84. System.out.println(val);
  85. textArea.append(val);
  86. break;
  87. }
  88. }
  89.  
  90. }
  91. }
  92.    //Encabezados de la tabla
  93.    private String[] getColumnas(){
  94.          String columna[]=new String[]{"A","B","C", "D", "E"};
  95.          return columna;
  96.    }
  97.    public static void main(String args[]) {
  98.     SwingUtilities.invokeLater(new Runnable() {
  99. @Override
  100. public void run() {
  101. pru obj = new pru();
  102.        obj.setVisible(true);
  103. }
  104. });
  105.    }
  106. @Override
  107. public void keyPressed(KeyEvent arg0) {
  108. if(arg0.getKeyCode() ==KeyEvent.VK_ENTER)search(textField.getText());
  109. }
  110. @Override public void keyReleased(KeyEvent arg0) {}
  111. @Override public void keyTyped(KeyEvent arg0) {}
  112.  
  113. @Override
  114. public void mouseClicked(MouseEvent arg0) {
  115. int[] rows = table.getSelectedRows();
  116. String val="";
  117. textArea.setText("");
  118. for(int row=0;row<rows.length;row++){
  119. for(int column=0;column<table.getColumnCount();column++){
  120. val+=table.getValueAt(rows[row], column)+"                    ";
  121. }
  122. val+="\n";
  123. }
  124. //System.out.println(val);
  125. textArea.append(val);
  126.  
  127. }
  128. @Override
  129. public void mouseEntered(MouseEvent arg0) {
  130. // TODO Auto-generated method stub
  131.  
  132. }
  133. @Override
  134. public void mouseExited(MouseEvent arg0) {
  135. // TODO Auto-generated method stub
  136.  
  137. }
  138. @Override
  139. public void mousePressed(MouseEvent arg0) {
  140. // TODO Auto-generated method stub
  141.  
  142. }
  143. @Override
  144. public void mouseReleased(MouseEvent arg0) {
  145. // TODO Auto-generated method stub
  146.  
  147. }
  148. }
  149.  
« Última modificación: 24 Noviembre 2011, 19:09 pm por Leyer » En línea

ZedGe

Desconectado Desconectado

Mensajes: 154


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

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


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


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

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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[?] JTable Seleccion de Filas Mediante Codigo. (Solucionado)
Java
AlbertoBSD 2 17,382 Último mensaje 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 Último mensaje 12 Febrero 2010, 22:42 pm
por RichardBoy
Eliminar Fila De Jtable(Jtabla Sin Model)
Java
ZedGe 4 5,428 Último mensaje 29 Noviembre 2011, 23:35 pm
por ZedGe
Evento onfocus en fila de una tabla « 1 2 »
Desarrollo Web
M3LiNdR1 11 13,334 Último mensaje 26 Enero 2013, 17:20 pm
por alister
Cómo seleccionar una fila de un JTable de Java
Java
soy_nicanor 5 10,759 Último mensaje 22 Enero 2015, 22:48 pm
por Usuario Invitado
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines