Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Añadir Una Tabla A Un Jscrollpane Mediante Eventos (http://www.forosdelweb.com/f45/anadir-tabla-jscrollpane-mediante-eventos-493659/)

pablopau 29/05/2007 10:09

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...:-)

chuidiang 29/05/2007 11:37

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.

pablopau 31/05/2007 11:37

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

chuidiang 31/05/2007 11:49

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.


La zona horaria es GMT -6. Ahora son las 08:22.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.