Autor
|
Tema: JTable, leer informacion editada por el usuario (Leído 11,297 veces)
|
Xedrox
Desconectado
Mensajes: 274
|
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
Mensajes: 201
|
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. 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
Mensajes: 274
|
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: 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" 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: 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
Mensajes: 43
Y ahora que pasa...
|
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
Mensajes: 1.186
|
Hola qué tal. El problema radica aquí: Netbeansjaja no te creas, es en esta parte de código {null} },
Ya que el valor es nulo al tratar de obtener su valor. Podrías cambiar el " null" por " """ O puedes hacer lo siguiente en el método "jButton1ActionPerformed" private void jButton1ActionPerformed (java. awt. event. ActionEvent evt ) { Object objeto = Tabla. getValueAt(0, 0); if(objeto==null) Tabla.setValueAt("",0,0); label.setText(Tabla.getValueAt(0,0).toString()); }
Para mi gusto está mejor la primera opción. Saludos.
|
|
|
En línea
|
abc
|
|
|
Xedrox
Desconectado
Mensajes: 274
|
Muchas Gracias por las respuestas. Saludos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Información de usuario en un programa
Programación Visual Basic
|
Ch3ck
|
3
|
1,730
|
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,738
|
16 Noviembre 2010, 18:42 pm
por Aeros
|
|
|
Google premiará al usuario por leer noticias
Noticias
|
wolfbcn
|
1
|
1,847
|
18 Julio 2011, 16:32 pm
por raul338
|
|
|
ayuda como pasar informacion de un texto a un JTable
Java
|
miguelsora
|
1
|
5,756
|
8 Junio 2013, 00:41 am
por Mitgus
|
|
|
¿leer información enviando email con ssl?
Hacking
|
kaniho
|
0
|
1,887
|
26 Julio 2014, 23:17 pm
por kaniho
|
|