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

Boton En Celda De Tabla

Estas en el tema de Boton En Celda De Tabla en el foro de Java en Foros del Web. Hola a todos, estoy haciendo el PFC y me he quedado estancado, a ver si me podeis echar un cable. ¿Como puedo insertar un jbutton ...
  #1 (permalink)  
Antiguo 30/05/2007, 13:22
 
Fecha de Ingreso: abril-2007
Mensajes: 9
Antigüedad: 17 años, 7 meses
Puntos: 0
Boton En Celda De Tabla

Hola a todos, estoy haciendo el PFC y me he quedado estancado, a ver si me podeis echar un cable.

¿Como puedo insertar un jbutton en una celda de una jtable?¿Hay alguna manera directa de hacerlo con Netbeans?

Me urge respuesta pq me he quedao parao y no puedo avanzar. Muchas gracias.
  #2 (permalink)  
Antiguo 30/05/2007, 20:14
 
Fecha de Ingreso: mayo-2007
Mensajes: 210
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: Boton En Celda De Tabla

que tal para poder colocar un jbutton en una celda tienes que crear una clase que extienda de DefaultTableCellRenderer ahi te pongo un ejemplo

public class MessageCellRenderer extends DefaultTableCellRenderer{

/**
* Creates a new instance of MessageCellRenderer
*/
public MessageCellRenderer() {
super();
}

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
String val="";
if((Boolean)value)
{
val = "LEIDO";
setIcon(new ImageIcon(getClass().getResource("/images/messageRead.png")));
}
else
{
val = "NUEVO";
setIcon(new ImageIcon(getClass().getResource("/images/newMessage.png")));
}
JLabel label = (JLabel)super.getTableCellRendererComponent(table, val, isSelected, hasFocus, row, column);
return label;
}

}

lo que hace el codigo anterior es mostrar un icono en la celda en este caso muestra un icono que indica que el mensaje es nuevo o ya se lo ha leido, para poner el boton tienes que sobrescribir el metodo getTableCellRendererComponent() como puedes ver devuelve un component cuando sobrescribas el metodo retorna un jbutton en vez de un label y el button aparecera en la celda de la tabla.

por ultimo para indicar a la tabla que tienes que usar el renderer que crees utilizas esto:
table_messages.getColumnModel().getColumn(0).setCe llRenderer(new MessageCellRenderer());

espero que esto te ayude

salu2
  #3 (permalink)  
Antiguo 30/05/2007, 22:58
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Re: Boton En Celda De Tabla

Hola:

Si quieres poner un botón en una celda, que yo sepa, no puedes hacerlo directamente con netbeans. Tienes que hacer código similar al que te ha mostrado vdpazmino.

En el JTable hay dos clases internas importantes, el TableCellRenderer y el TableCellEditor. La primera decide cómo se ven las celdas. Si cambias ese TableCellRenderer, puedes hacer que una celda se pinte un botón, pero no será un botón que se pueda pulsar ni hacer nada con él. Si quieres además que el botón se pueda pulsar, debes cambiar también el TableCellEditor.

En los enlaces anteriores tienes ejemplos de como cambiar cada cosa.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 31/05/2007, 14:29
 
Fecha de Ingreso: abril-2007
Mensajes: 9
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Boton En Celda De Tabla

ok, voy a probarlo.

Muchas gracias por la ayuda.

Vemoooooo
  #5 (permalink)  
Antiguo 01/06/2007, 13:24
 
Fecha de Ingreso: abril-2007
Mensajes: 9
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Boton En Celda De Tabla

He probado el código y me dá error en:
if((Boolean)value)

pq?Algo estaré haciendo mal y no lo sé.

Ayudaaaaaaaaaaaaaaaaaaaaaaaaa.

Muchas gracias
  #6 (permalink)  
Antiguo 01/06/2007, 13:53
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Re: Boton En Celda De Tabla

Hola:

Posiblemente el dato no sea Boolean. Reemplaza eso por algo como

Código:
if (value instanceof Boolean)
{
   if ((Boolean)value)
   ....
}
De todas formas, asegúrate de meter un Boolean como dato para esa celda, si no, no te hará nada.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 01/06/2007, 14:42
 
Fecha de Ingreso: abril-2007
Mensajes: 9
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Boton En Celda De Tabla

Hice lo que me dijiste y ahora me sale:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
at ventanas.DensEdificioV$MessageCellRenderer.getTabl eCellRendererComponent(DensEdificioV.java:359)
at javax.swing.JTable.prepareRenderer(JTable.java:392 8)
at javax.swing.plaf.basic.BasicTableUI.paintCell(Basi cTableUI.java:2072)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Bas icTableUI.java:1974)
.
.
.
.


Si es mu coñazo dejalo, intentaré hacer de otra forma la tabla pa evitar botones en celdas, supongo que será mas sencillo pero menos elegante.(Soy ingeniero mecanico y no informatico, se me fué la olla eligiendo PFC).

Muchas gracias.
  #8 (permalink)  
Antiguo 01/06/2007, 22:44
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Re: Boton En Celda De Tabla

Hola:

Lo más probable es que no encuentre la ruta de la imagen en el new ImageIcon("....");

Verfica que la imagen está donde pones y para asegurarte más, pon un path absoluto.

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 22:12.