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

Añadir Una Tabla A Un Jscrollpane Mediante Eventos

Estas en el tema de Añadir Una Tabla A Un Jscrollpane Mediante Eventos en el foro de Java en Foros del Web. Hola, la situacion es la siguiente: Tengo un JFrame creado con un JScrollPane y dos botones, lo que quiero es que uno de los botones ...
  #1 (permalink)  
Antiguo 29/05/2007, 10:09
 
Fecha de Ingreso: mayo-2007
Mensajes: 3
Antigüedad: 17 años
Puntos: 0
Añadir Una Tabla A Un Jscrollpane Mediante Eventos

Hola, la situacion es la siguiente:

Tengo un JFrame creado con un JScrollPane y dos botones, lo que quiero es que uno de los botones al ser pulsado cree una tabla y la inserte dentro del JScrollPane y el otro botón que cada vez que sea pulsado añada una columna a la tabla ya existente dentro del JScrollPane.

Mi problema surge al utilizar los eventos que unen el boton y el ScrollPane, ya que no se si se mandan bien o se reciben bien.

Tampoco se muy bien como manejar la tabla que esta dentro del ScrollPane y no se si se deben crear unos objetos nuevos o recargar/pintar unos objetos nuevos.

Muchas Gracias...
  #2 (permalink)  
Antiguo 29/05/2007, 11:37
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: Añadir Una Tabla A Un Jscrollpane Mediante Eventos

Hola:

En tu clase pon todos los elementos como atributos de la clase, para tenerlos accesibles en cualquier sitio

Código:
class TuClase extends JFrame
{
   JScrollPane s = new JScrollPane();
   JButton b1 = new JButton(...);
   JButton b2 = new JButton(...);
   DefaultTableModel modelo = new DefaultTableModel();
   JTable t = null;
   ...
}
Ahora, en algún sitio de esta clase, puedes poner este código para el botón que tiene que añadir la tabla

Código:
b1.addActionListener (new ActionListener() {
   public void actionPerformed(ActionEvent e) {
      if (t == null) {
         t=new JTable(modelo);
         s.setViewporView(t);
      }
   }
});
y para añadir columnas, de forma similar en el otro botón, pero usando el método addColumn() de modelo. Esto debería repintar automáticamente la tabla.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 31/05/2007, 11:37
 
Fecha de Ingreso: mayo-2007
Mensajes: 3
Antigüedad: 17 años
Puntos: 0
Re: Añadir Una Tabla A Un Jscrollpane Mediante Eventos

Hola chuidiang, muchas gracias por ayudarme, pero sigue sin funcionar.....

aquí te dejo el código, los botones siguen sin hacer caso a los eventos...


/*
* NuevoJFrame.java
*
* Created on 31 de mayo de 2007, 18:54
*/
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.*;
import javax.swing.JScrollPane;
import javax.swing.JTable;
/**
*
* @author Pablo Paunero
*/
public class NuevoJFrame extends javax.swing.JFrame {


JTable t = null;
DefaultTableModel modelo = new DefaultTableModel();



/** Creates new form NuevoJFrame */
public NuevoJFrame() {
initComponents();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Código Generado ">
private void initComponents() {
s = new javax.swing.JScrollPane();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstan ts.EXIT_ON_CLOSE);

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

jButton2.setText("A\u00f1adir compas");

org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.Gro upLayout.LEADING)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layou t.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(97, 97, 97)
.add(s, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 197, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(layout.createSequentialGroup()
.add(115, 115, 115)
.add(jButton1)
.add(18, 18, 18)
.add(jButton2)))
.addContainerGap(77, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.Gro upLayout.LEADING)
.add(layout.createSequentialGroup()
.add(32, 32, 32)
.add(s, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 100, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(33, 33, 33)
.add(layout.createParallelGroup(org.jdesktop.layou t.GroupLayout.BASELINE)
.add(jButton1)
.add(jButton2))
.addContainerGap())
);
pack();
}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (t == null) {
t=new JTable(modelo);
s.setViewportView(t);

}
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NuevoJFrame().setVisible(true);

}
});
}

// Declaración de variables - no modificar
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JScrollPane s;
// Fin de declaración de variables

}


P.D: Utilizo netbeans, puede que tenga algo mal configurado???


Muchas Gracias
  #4 (permalink)  
Antiguo 31/05/2007, 11:49
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Re: Añadir Una Tabla A Un Jscrollpane Mediante Eventos

Hola:

Prueba a llamar al método updateUI() del panel/ventana que contiene la tabla después de haberla añadido. Si la ventana está visible y se le añaden componentes nuevos -en tu caso el JTable-, es posible que no se visualicen hasta que se llame al método updateUI()

Se bueno.
__________________
Apuntes Java
Wiki de Programación
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 07:57.