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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  JTable, leer informacion editada por el usuario
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: JTable, leer informacion editada por el usuario  (Leído 11,099 veces)
Xedrox

Desconectado Desconectado

Mensajes: 274



Ver Perfil
JTable, leer informacion editada por el usuario
« en: 6 Marzo 2011, 01:01 am »

Buenas, estoy haciendo un programa de prueba con Netbean, tengo una tabla con 4 columnas y la idea es que al apretar un boton sume el contenido que inserto el usuario en la fila uno al presionar un boton. Como puedo leer el contenido de la Tabla, NetBeans agrega tanto codigo autogenerado que me pierdo :S.

Muchas Gracias
Saludos


En línea

visualfree

Desconectado Desconectado

Mensajes: 201


Ver Perfil
Re: JTable, leer informacion editada por el usuario
« Respuesta #1 en: 6 Marzo 2011, 06:11 am »

Aca te hice un codigo de ejemplo:

primero ingresa varios nombres y numeros y luego presiona el boton sumar...
espero te sea de ayuda.

No uso NetBeans.

Código:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

import java.awt.GridLayout;
import java.awt.event.*;

public class SumaJTable {
public static void main(String[] args) {
NuevaVentana v=new NuevaVentana();
v.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
v.setVisible(true);
}

}
class NuevaVentana extends JFrame{
public NuevaVentana(){
setTitle("Suma JTable");
setSize(ancho,largo);
NuevoPanel p=new NuevoPanel();
add(p);
}
private final int ancho=330;
private final int largo=300;


}
class NuevoPanel extends JPanel{
JLabel lbNombre=new JLabel("Ingresar Nombre:");
JTextField txtNombre=new JTextField();
JLabel lbNumero=new JLabel("Ingresar Numero:");
JTextField txtNumero=new JTextField();
DefaultTableModel modelo=new DefaultTableModel();
{
modelo.addColumn("Nombre");
modelo.addColumn("Numero");
}
JTable tabla=new JTable(modelo);
JScrollPane scroll=new JScrollPane(tabla);
JButton btnSuma=new JButton("Agregar Datos");
JLabel lbSuma=new JLabel("0");
JButton SumarDatos=new JButton("Sumar Datos");
int sumita=0;
public NuevoPanel(){
this.setLayout(null);
lbNombre.setBounds(20,20,120,20);
this.add(lbNombre);
txtNombre.setBounds(20,40,120,20);
this.add(txtNombre);
lbNumero.setBounds(20,60,120,20);
this.add(lbNumero);
txtNumero.setBounds(20,80,120,20);
this.add(txtNumero);
lbSuma.setBounds(20,100,30,30);
this.add(lbSuma);
scroll.setBounds(150,20,140,100);
this.add(scroll);
btnSuma.setBounds(150,120,140,20);
this.add(btnSuma);
SumarDatos.setBounds(150,140,140,20);
this.add(SumarDatos);
OyentebtnSuma oyente=new OyentebtnSuma();
btnSuma.addActionListener(oyente);
OyenteSumarDatos oyente1=new OyenteSumarDatos();
SumarDatos.addActionListener(oyente1);
}
class OyentebtnSuma implements ActionListener{
public void actionPerformed(ActionEvent e){
String nom=txtNombre.getText();
int num=Integer.parseInt(txtNumero.getText());
Object[] fila=new Object[2];
fila[0]=nom;
            fila[1]=num;
            modelo.addRow(fila);
           
}
}
class OyenteSumarDatos implements ActionListener{
public void actionPerformed(ActionEvent e)
{
int aux=0;
for(int i = 0; i < tabla.getRowCount(); i++) 
            {
            sumita = Integer.parseInt(tabla.getValueAt(i, 1).toString());
            aux=sumita+aux;
           
            }
lbSuma.setText(Integer.toString(aux));

       
}
}

}


En línea

Xedrox

Desconectado Desconectado

Mensajes: 274



Ver Perfil
Re: JTable, leer informacion editada por el usuario
« Respuesta #2 en: 6 Marzo 2011, 16:15 pm »

Gracias por la respuesta, pero antes de complicarme voy a preguntar algo mas simple, supongamos que tengo otra vez un boton, una tabla y un label, yo quiero que al presionar el boton, el label tome texto de lo que hay en la celda 1-1 (primera fila primera columna), pero en vez de eso pone "null". He aqui el codigo:

Código:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
 {                                        
      label.setText(String.valueOf(Tabla.getValueAt(1,1)));
}

Otra que intente y me tira una Excepcion "nullPointerException"

Código:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
 {                                        
      label.setText(Tabla.getValueAt(1,1).toString());
 }

Muchas gracias saludos!

Pego todo el codigo por si ven algo raro:


Código:

package javaapplication6;
import javax.swing.*;
/**
 *
 * @author Nicolas
 */
public class NewJFrame extends javax.swing.JFrame
{

   
    public NewJFrame()
    {
        initComponents();
    }

   
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        Tabla = new javax.swing.JTable();
        label = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("Calcular");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        Tabla.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null}
            },
            new String [] {
                "Title 1"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        jScrollPane1.setViewportView(Tabla);

        label.setText("Resultado:");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(27, 27, 27)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(label)
                    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(660, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(20, 20, 20)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(220, 220, 220)
                .addComponent(label)
                .addContainerGap(47, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                       

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        label.setText(Tabla.getValueAt(0,0).toString());
     
    }                                       


    // Variables declaration - do not modify                     
    private javax.swing.JTable Tabla;
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel label;
    // End of variables declaration                   

}
« Última modificación: 7 Marzo 2011, 01:14 am por Xedrox » En línea

ChavalChavito

Desconectado Desconectado

Mensajes: 43


Y ahora que pasa...


Ver Perfil
Re: JTable, leer informacion editada por el usuario
« Respuesta #3 en: 7 Marzo 2011, 22:16 pm »

Código:
private void JTableMousePressed(java.awt.event.MouseEvent evt)
       {
        int fila= JTable.getSelectedRow();
        label.setText((String) dtm.getValueAt(fila, 0)); 
        // d la fila clickeada la primer columna (x eso el 0)
        // dtm DefaultTableModel
}
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: JTable, leer informacion editada por el usuario
« Respuesta #4 en: 7 Marzo 2011, 23:06 pm »

Hola qué tal.

El problema radica aquí:

Netbeans

jaja no te creas, es en esta parte de código

Código
  1. Tabla.setModel(new javax.swing.table.DefaultTableModel(
  2.            new Object [][] {
  3.                {null}
  4.            },
  5.  

Ya que el valor es nulo al tratar de obtener su valor.

Podrías cambiar el "null" por """:xD

O puedes hacer lo siguiente en el método "jButton1ActionPerformed"

Código
  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  2.     Object objeto = Tabla.getValueAt(0,0);
  3.     if(objeto==null)
  4.     Tabla.setValueAt("",0,0);
  5.  
  6.        label.setText(Tabla.getValueAt(0,0).toString());
  7.    }    
  8.  

Para mi gusto está mejor la primera opción.

Saludos.
En línea

abc
Xedrox

Desconectado Desconectado

Mensajes: 274



Ver Perfil
Re: JTable, leer informacion editada por el usuario
« Respuesta #5 en: 8 Marzo 2011, 02:26 am »

Muchas Gracias por las respuestas. Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Información de usuario en un programa
Programación Visual Basic
Ch3ck 3 1,587 Último mensaje 17 Junio 2005, 00:56 am
por Slasher-K
Leer "numeros" de todas las filas de un JTable y luego sumarlos.
Java
NelxoN 2 5,561 Último mensaje 16 Noviembre 2010, 18:42 pm
por Aeros
Google premiará al usuario por leer noticias
Noticias
wolfbcn 1 1,623 Último mensaje 18 Julio 2011, 16:32 pm
por raul338
ayuda como pasar informacion de un texto a un JTable
Java
miguelsora 1 5,618 Último mensaje 8 Junio 2013, 00:41 am
por Mitgus
¿leer información enviando email con ssl?
Hacking
kaniho 0 1,724 Último mensaje 26 Julio 2014, 23:17 pm
por kaniho
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines