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

Metodo getSelectedRow() no retorna la fila seleccionada

Estas en el tema de Metodo getSelectedRow() no retorna la fila seleccionada en el foro de Java en Foros del Web. Saludos Estoy haciendo un mantenimiento de eventos. Y tengo una tabla de la que quiero seleccionar una fila para editar sus datos. Bien, cuando la ...
  #1 (permalink)  
Antiguo 03/08/2011, 23:35
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Metodo getSelectedRow() no retorna la fila seleccionada

Saludos

Estoy haciendo un mantenimiento de eventos. Y tengo una tabla de la que quiero seleccionar una fila para editar sus datos.

Bien, cuando la selecciono y le doy al boton editar, me arroja el siguiente error:

Cita:
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.get(Unknown Source)
Eso es porque el metodo " nombreTabla.getSelectedRow() " me arroja -1.
Es decir, presenta como k no se registro ninguna tabla, cuando si lo hizo. He verificado el nombre de la tabla, y que es la tabla que he seleccionado, y no entiendo porque no registra la seleccion de la fila.

Hay varias tablas a las que le tengo k dar mantenimiento, y la primera me funciona perfectamente, pero las otras no.

Alguien me puede ayudar?
  #2 (permalink)  
Antiguo 04/08/2011, 08:23
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Metodo getSelectedRow() no retorna la fila seleccionada

Trata con table.getSelectionModel().getLeadSelectionIndex()
Sino funciona, muestra el código que tienes.
  #3 (permalink)  
Antiguo 04/08/2011, 10:34
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Metodo getSelectedRow() no retorna la fila seleccionada

Aun asi no funciono. Pongo aqui la clase completa porque me parece que no es la sintaxis sino alguna otra cosa. Pero no me explico porque en un lugar me funciona correctamente y en otro no.
No tienen que analizar todo el codigo, ni mucho menos. Abajo señalo donde esta el actionListener que ejecuta bien el codigo, y en el siguiente trozo de codigo, que es donde no funciona, tambien lo muestro aparte, por el largo, aunque como dije, no tienes que analizarlo todo.

Código Java:
Ver original
  1. import javax.swing.*;
  2. package proyecto;
  3.  
  4. import javax.swing.*;
  5.  
  6. public class DialogoPerfilAdministrador extends JDialog {
  7.  
  8.         //PANEL USUARIOS
  9.        
  10.         JPanel panel_Usuarios = new JPanel();
  11.         panel_Usuarios.setPreferredSize(new Dimension(2, 2));
  12.         panel_Usuarios.setBorder(new MatteBorder(1, 1, 1, 1, (Color) Color.LIGHT_GRAY));
  13.         panel_Usuarios.setFont(new Font("Tahoma", Font.BOLD, 12));
  14.         tabbedPane.addTab("Usuarios", new ImageIcon(DialogoPerfilAdministrador.class.getResource("/images/Icono_Usuarios.png")), panel_Usuarios, null);
  15.         panel_Usuarios.setLayout(null);
  16.        
  17.             //DATOS USUARIOS
  18.             JPanel Datos_Usuarios = new JPanel();
  19.             Datos_Usuarios.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Datos del Usuario", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(116, 116, 116)));
  20.             Datos_Usuarios.setBounds(10, 10, 770, 70);
  21.             panel_Usuarios.add(Datos_Usuarios);
  22.             Datos_Usuarios.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
  23.            
  24.             JLabel lblNombre_Usuario = new JLabel("Nombre");
  25.             Datos_Usuarios.add(lblNombre_Usuario);
  26.            
  27.             txtNombre_Usuarios = new JTextField();
  28.             Datos_Usuarios.add(txtNombre_Usuarios);
  29.             txtNombre_Usuarios.setColumns(10);
  30.            
  31.             JLabel lblApellido_Usuario = new JLabel("Apellido");
  32.             Datos_Usuarios.add(lblApellido_Usuario);
  33.            
  34.             txtApellido_Usuario = new JTextField();
  35.             Datos_Usuarios.add(txtApellido_Usuario);
  36.             txtApellido_Usuario.setColumns(10);
  37.            
  38.             JLabel lblUsuario_Usuario = new JLabel("Usuario");
  39.             Datos_Usuarios.add(lblUsuario_Usuario);
  40.            
  41.             txtUsuario_Usuario = new JTextField();
  42.             Datos_Usuarios.add(txtUsuario_Usuario);
  43.             txtUsuario_Usuario.setColumns(10);
  44.            
  45.             JLabel lblClave_Usuario = new JLabel("Clave");
  46.             Datos_Usuarios.add(lblClave_Usuario);
  47.            
  48.             txtClave_Usuario = new JPasswordField();
  49.             txtClave_Usuario.setColumns(10);
  50.             Datos_Usuarios.add(txtClave_Usuario);
  51.            
  52.             JLabel lblPerfil_Usuario = new JLabel("Perfil");
  53.             Datos_Usuarios.add(lblPerfil_Usuario);
  54.            
  55.             comboBoxPerfil_Usuario = new JComboBox();
  56.             comboBoxPerfil_Usuario.setModel(new DefaultComboBoxModel(new String[] {"Elija el perfil", "Administrador", "Portero"}));
  57.             Datos_Usuarios.add(comboBoxPerfil_Usuario);
  58.            
  59.             //FUNCIONALIDADES USUARIOS
  60.             JPanel Funcionalidades_Usuario = new JPanel();
  61.             Funcionalidades_Usuario.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Funcionalidades", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(116, 116, 116)));
  62.             Funcionalidades_Usuario.setBounds(202, 90, 385, 100);
  63.             panel_Usuarios.add(Funcionalidades_Usuario);
  64.             Funcionalidades_Usuario.setLayout(null);
  65.            
  66.                 // INSERTAR USUARIO
  67.                
  68.                 JButton btnInsertar_Usuarios = new JButton("");
  69.                 btnInsertar_Usuarios.addActionListener(new ActionListener() {
  70.                     public void actionPerformed(ActionEvent arg0) {
  71.                        
  72.                         modelo_Usuario.insertar(new Usuario(txtNombre_Usuarios.getText(), txtApellido_Usuario.getText(), txtUsuario_Usuario.getText(), txtClave_Usuario.getText(), comboBoxPerfil_Usuario.getSelectedItem().toString() ));
  73.                        
  74.                         limpiarCampos_Usuarios();
  75.                        
  76.                         JOptionPane.showMessageDialog( new DialogoInicioSesion( new Vista() ),
  77.                                 "Contacto Agregado satisfactoriamente." +
  78.                                 "\nCuando desee modificar un contacto," +
  79.                                 "\nseleccionelo y dele click a editar."
  80.                                 ,"Usuario Agregado", JOptionPane.INFORMATION_MESSAGE);
  81.                        
  82.                     }
  83.                 });
  84.                 btnInsertar_Usuarios.setToolTipText("Insertar");
  85.                 btnInsertar_Usuarios.setIcon(new ImageIcon("C:\\Documents and Settings\\BlackCrystal\u2122\\Escritorio\\Indigo\\workspace\\ProyectoFinal\\src\\images\\Icono_Insertar.png"));
  86.                 btnInsertar_Usuarios.setBounds(10, 25, 65, 63);
  87.                 Funcionalidades_Usuario.add(btnInsertar_Usuarios);
  88.                
  89. //Esta es la parte que funciona bien               
  90.  
  91.                                 //EDITAR USUARIO
  92.                
  93.                 JButton btnEditar_Usuarios = new JButton("");
  94.                 btnEditar_Usuarios.addActionListener(new ActionListener() {
  95.                     public void actionPerformed(ActionEvent arg0) {
  96.                        
  97.                         filaSeleccionada = tablaUsuarios.getSelectedRow(); 
  98.                        
  99.                         txtNombre_Usuarios.setText(     modelo_Usuario.usuarios.get(filaSeleccionada).getNombre() );
  100.                         txtApellido_Usuario.setText(    modelo_Usuario.usuarios.get(filaSeleccionada).getApellido() );
  101.                         txtUsuario_Usuario.setText(     modelo_Usuario.usuarios.get(filaSeleccionada).getUsuario() );
  102.                         txtClave_Usuario.setText(       modelo_Usuario.usuarios.get(filaSeleccionada).getClave() );
  103.                         comboBoxPerfil_Usuario.setSelectedItem( modelo_Usuario.usuarios.get(filaSeleccionada).getPerfil() );
  104.                        
  105.                         JOptionPane.showMessageDialog( new DialogoInicioSesion( new Vista() ),
  106.                                 "Los datos del usuario que desea editar estan en los campos superiores de la pantalla." +
  107.                                 "\nCuando haya concluido haga click en Modificar."
  108.                                 , "Edicion de Usuario", JOptionPane.INFORMATION_MESSAGE);
  109.                        
  110.                     }
  111.                 });
  112.                 btnEditar_Usuarios.setIcon(new ImageIcon("C:\\Documents and Settings\\BlackCrystal\u2122\\Escritorio\\Indigo\\workspace\\ProyectoFinal\\bin\\images\\Icono_Editar.png"));
  113.                 btnEditar_Usuarios.setBounds(85, 25, 65, 63);
  114.                 Funcionalidades_Usuario.add(btnEditar_Usuarios);
  115.                
  116.                 //MODIFICAR USUARIO
  117.                
  118.                 JButton btnModificar_Usuarios = new JButton("");
  119.                 btnModificar_Usuarios.addActionListener(new ActionListener() {
  120.                     public void actionPerformed(ActionEvent arg0) {
  121.                        
  122.                         if (txtNombre_Usuarios.getText().length() < 2 ){
  123.                             JOptionPane.showMessageDialog( new DialogoInicioSesion( new Vista() ) ,
  124.                                     "Aun no ha editado ningun contacto. " +
  125.                                     "\nPor favor, seleccione una fila del listado y dele click a editar." +
  126.                                     "\nLuego a modificar para guardar las modificaciones."
  127.                                     , "Edicion de incorrecta de Usuario", JOptionPane.INFORMATION_MESSAGE);
  128.                         } else {
  129.                             modelo_Usuario.usuarios.get(filaSeleccionada).setNombre(txtNombre_Usuarios.getText());
  130.                             modelo_Usuario.usuarios.get(filaSeleccionada).setApellido(txtApellido_Usuario.getText());
  131.                             modelo_Usuario.usuarios.get(filaSeleccionada).setUsuario(txtUsuario_Usuario.getText());
  132.                             modelo_Usuario.usuarios.get(filaSeleccionada).setClave(txtClave_Usuario.getText());
  133.                             modelo_Usuario.usuarios.get(filaSeleccionada).setPerfil(comboBoxPerfil_Usuario.getSelectedItem().toString());
  134.                            
  135.                             modelo_Usuario.modificar(filaSeleccionada);
  136.                            
  137.                             JOptionPane.showMessageDialog(  new DialogoInicioSesion( new Vista() ) ,
  138.                                     "Usuario modificado satisfactoriamente. " +
  139.                                     "\nSi quiso modificar el nombre de un usuario," +
  140.                                     "\nse creo un nuevo usuario nuevo, elimine el anterior" +
  141.                                     "\nLuego a modificar para guardar las modificaciones.",
  142.                                     "Usuario Modificado", JOptionPane.INFORMATION_MESSAGE);
  143.                            
  144.                             limpiarCampos_Usuarios();
  145.                         }
  146.                     }
  147.                 });
  148.                 btnModificar_Usuarios.setIcon(new ImageIcon("C:\\Documents and Settings\\BlackCrystal\u2122\\Escritorio\\Indigo\\workspace\\ProyectoFinal\\src\\images\\Icono_Modificar.png"));
  149.                 btnModificar_Usuarios.setBounds(160, 25, 65, 63);
  150.                 Funcionalidades_Usuario.add(btnModificar_Usuarios);
  151.                
  152.                 // ELIMINAR USUARIO
  153.                
  154.                 JButton btnEliminar_Usuarios = new JButton("");
  155.                 btnEliminar_Usuarios.addActionListener(new ActionListener() {
  156.                     public void actionPerformed(ActionEvent arg0) {
  157.                        
  158.                         modelo_Usuario.eliminar( tablaUsuarios.getSelectedRow() );
  159.                        
  160.                         JOptionPane.showMessageDialog( new DialogoInicioSesion( new Vista() ) ,
  161.                         "Contacto eliminado satisfactoriamente.",
  162.                         "Contacto Eliminado", JOptionPane.INFORMATION_MESSAGE);
  163.                        
  164.                     }
  165.                 });
  166.                 btnEliminar_Usuarios.setIcon(new ImageIcon("C:\\Documents and Settings\\BlackCrystal\u2122\\Escritorio\\Indigo\\workspace\\ProyectoFinal\\src\\images\\Icono_Eliminar.png"));
  167.                 btnEliminar_Usuarios.setBounds(235, 25, 65, 63);
  168.                 Funcionalidades_Usuario.add(btnEliminar_Usuarios);
  169.                
  170.             // LISTADO USUARIOS
  171.            
  172.             JPanel Listado_Usuarios = new JPanel();
  173.             Listado_Usuarios.setPreferredSize(new Dimension(0, 0));
  174.             Listado_Usuarios.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Listado de Usuarios", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(116, 116, 116)));
  175.             Listado_Usuarios.setBounds(10, 200, 772, 190);
  176.             panel_Usuarios.add(Listado_Usuarios);
  177.            
  178.             JScrollPane scrollPane_Usuarios = new JScrollPane();
  179.             scrollPane_Usuarios.setPreferredSize(new Dimension(750, 150));
  180.             Listado_Usuarios.add(scrollPane_Usuarios);
  181.            
  182.             tablaUsuarios = new JTable();
  183.             tablaUsuarios.setBounds(new Rectangle(220, 220, 0, 0));
  184.             tablaUsuarios.setModel(modelo_Usuario);
  185.             scrollPane_Usuarios.setViewportView(tablaUsuarios);
  #4 (permalink)  
Antiguo 04/08/2011, 10:40
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Metodo getSelectedRow() no retorna la fila seleccionada

Este esta es la parte que No funciona bien. Es en el Editar Evento.

Código Java:
Ver original
  1. //PANEL EVENTOS
  2.        
  3.         JPanel panel_Eventos = new JPanel();
  4.         tabbedPane.addTab("Eventos", new ImageIcon("C:\\Documents and Settings\\BlackCrystal\u2122\\Escritorio\\Indigo\\workspace\\ProyectoFinal\\src\\images\\Icono_Eventos.png"), panel_Eventos, null);
  5.         panel_Eventos.setLayout(null);
  6.        
  7.             //DATOS EVENTOS
  8.        
  9.             JPanel Datos_Eventos = new JPanel();
  10.             Datos_Eventos.setBounds(10, 10, 770, 70);
  11.             Datos_Eventos.setBorder(new TitledBorder(null, "Mantenimiento de Eventos", TitledBorder.LEADING, TitledBorder.TOP, null, null));
  12.             panel_Eventos.add(Datos_Eventos);
  13.             Datos_Eventos.setLayout(new FlowLayout(FlowLayout.CENTER, 12, 5));
  14.        
  15.             JLabel lblNombre_Eventos = new JLabel("Nombre");
  16.             Datos_Eventos.add(lblNombre_Eventos);
  17.        
  18.             txtNombre_Eventos = new JTextField();
  19.             txtNombre_Eventos.setColumns(10);
  20.             Datos_Eventos.add(txtNombre_Eventos);
  21.        
  22.             JLabel lblFecha_Eventos = new JLabel("Fecha");
  23.             Datos_Eventos.add(lblFecha_Eventos);
  24.            
  25.             txtFecha_Eventos = new JTextField();
  26.             txtFecha_Eventos.setColumns(10);
  27.             Datos_Eventos.add(txtFecha_Eventos);
  28.            
  29.             JLabel lblLugar_Eventos = new JLabel("Lugar");
  30.             Datos_Eventos.add(lblLugar_Eventos);
  31.            
  32.             txtLugar_Eventos = new JTextField();
  33.             txtLugar_Eventos.setColumns(10);
  34.             Datos_Eventos.add(txtLugar_Eventos);
  35.            
  36.             //FUNCIONALIDADES EVENTOS
  37.        
  38.             JPanel Funcionalidades_Eventos = new JPanel();
  39.             Funcionalidades_Eventos.setBorder(new TitledBorder(null, "Funcionalidades", TitledBorder.LEADING, TitledBorder.TOP, null, null));
  40.             Funcionalidades_Eventos.setLayout(null);
  41.             Funcionalidades_Eventos.setBounds(202, 90, 385, 100);
  42.             panel_Eventos.add(Funcionalidades_Eventos);
  43.        
  44.                 //  INSERTAR EVENTO
  45.                
  46.                 JButton btnInsertar_Eventos = new JButton("");
  47.                 btnInsertar_Eventos.addActionListener(new ActionListener() {
  48.                     public void actionPerformed(ActionEvent arg0) {
  49.                        
  50.                         modelo_Evento.insertar(new Evento(txtNombre_Eventos.getText(),txtFecha_Eventos.getText(), txtLugar_Eventos.getText() ));
  51.                        
  52.                         JOptionPane.showMessageDialog( new DialogoInicioSesion( new Vista() ),
  53.                                 "Evento agregado satisfactoriamente." +
  54.                                 "\nCuando desee modificar un evento," +
  55.                                 "\nseleccionelo y dele click a editar.",   
  56.                                 "Evento Agregado", JOptionPane.INFORMATION_MESSAGE);
  57.                        
  58.                     }
  59.                 });
  60.                 btnInsertar_Eventos.setIcon(new ImageIcon("C:\\Documents and Settings\\BlackCrystal\u2122\\Escritorio\\Indigo\\workspace\\ProyectoFinal\\src\\images\\Icono_Insertar.png"));
  61.                 btnInsertar_Eventos.setToolTipText("Insertar");
  62.                 btnInsertar_Eventos.setBounds(10, 25, 65, 63);
  63.                 Funcionalidades_Eventos.add(btnInsertar_Eventos);
  64.            
  65.                 //  EDITAR EVENTO
  66.                
  67.                 JButton btnEditar_Eventos = new JButton("");
  68.                 btnEditar_Eventos.addActionListener(new ActionListener() {
  69.                     public void actionPerformed(ActionEvent e) {
  70.                    
  71.                         filaSeleccionadaEvento = tablaEventos.getSelectionModel().getLeadSelectionIndex();
  72.                         System.out.println( tablaEventos.getSelectionModel().getLeadSelectionIndex() );
  73.                         txtNombre_Eventos.setText(  modelo_Evento.eventos.get(filaSeleccionadaEvento).getNombre_Evento() );
  74.                         txtFecha_Eventos.setText(   modelo_Evento.eventos.get(filaSeleccionadaEvento).getFecha_Evento() );
  75.                         txtLugar_Eventos.setText(   modelo_Evento.eventos.get(filaSeleccionadaEvento).getUbicacion_Evento() );
  76.                        
  77.                         JOptionPane.showMessageDialog( new DialogoInicioSesion( new Vista() ),
  78.                         "Los datos del evento que desea editar" +
  79.                         "\nestan en los campos superiores de la pantalla." +
  80.                         "\nCuando haya concluido haga click en Modificar.",
  81.                         "Edicion de Evento", JOptionPane.INFORMATION_MESSAGE);
  82.                     }
  83.                 });
  84.                 btnEditar_Eventos.setIcon(new ImageIcon("C:\\Documents and Settings\\BlackCrystal\u2122\\Escritorio\\Indigo\\workspace\\ProyectoFinal\\src\\images\\Icono_Editar.png"));
  85.                 btnEditar_Eventos.setBounds(85, 25, 65, 63);
  86.                 Funcionalidades_Eventos.add(btnEditar_Eventos);
  #5 (permalink)  
Antiguo 04/08/2011, 12:20
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Metodo getSelectedRow() no retorna la fila seleccionada

Ya me he podido dar cuenta de lo que sucedia. El getSelectedRow funciona perfectamente. Lo que ocurre es que tengo un tabbed pane, y en diferentes paneles, tengo esa misma tabla.

Lo que ocurria es que me seleccionaba la fila seleccionada de la segunda tabla y cuando le daba a editar a la primera, me devolvia -1 porque no habia fila seleccionada. Cuando me di cuenta, seleccionaba una fila en la segunda tabla, volvia al tabbedPane de la primera y le daba a editar, y ahi me subia los datos de la fila a los textfields correctamente.

¿Alguna manera en la que pudiera lograr la independencia de las tablas?

Me gustaria seleccionar una fila de una tabla y que ello no afecte las filas seleccionadas de las demas tablas.
  #6 (permalink)  
Antiguo 04/08/2011, 18:50
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Metodo getSelectedRow() no retorna la fila seleccionada

Hola:

Si, cambiales el nombre y listo!

Tuve un problema similar al tuyo hace poco.

saludos!

Etiquetas: fila, metodo, retorna
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 10:05.