package jctable; import java.awt.Color; import java.awt.Component; import java.awt.Font; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; /** * @web http://jc-mouse.blogspot.com/ * @author Mouse */ public class FormatoTabla extends DefaultTableCellRenderer{ Font normal = new Font( "Arial",Font.PLAIN,12 ); Font negrilla = new Font( "Helvetica",Font.BOLD,18 ); Font cursiva = new Font( "Times new roman",Font.ITALIC,12 ); @Override public Component getTableCellRendererComponent ( JTable table, Object value, boolean selected, boolean focused, int row, int column ) { setEnabled(table == null || table.isEnabled()); setBackground(Color.cyan);//color de fondo table.setFont(normal);//tipo de fuente table.setForeground(Color.black);//color de texto setHorizontalAlignment(2);//derecha //si la celda esta vacia se reemplaza por el texto "<vacio>" y se rellena la celda de color negro y fuente color blanco if(String.valueOf(table.getValueAt(row,column)).equals("")||String.valueOf(table.getValueAt(row,column)).equals("<vacio>")){ table.setValueAt("<vacio>", row, column); setBackground(Color.black); table.setForeground(Color.white); table.setFont(cursiva); } /*--------*/ if(String.valueOf(table.getValueAt(row,column)).equals("jc Mouse")){ setBackground(Color.red); table.setFont(negrilla); setHorizontalAlignment(0);//centro } /*--------*/ if(String.valueOf(table.getValueAt(row,column)).equals("de")){ setBackground(Color.yellow); table.setFont(negrilla); setHorizontalAlignment(0);//centro } /*--------*/ if(String.valueOf(table.getValueAt(row,column)).equals("Bolivia")){ setBackground(Color.GREEN); table.setFont(negrilla); setHorizontalAlignment(0);//centro } /*--------*/ //si la celda contiene números if(isNumber(String.valueOf(table.getValueAt(row,column)))){ setBackground(Color.BLUE); setHorizontalAlignment(4);//izquierda } super.getTableCellRendererComponent(table, value, selected, focused, row, column); return this; } // private boolean isNumber(String cadena){ try { Double.parseDouble(cadena.replace(",", "")); } catch (NumberFormatException nfe){ String newCadena = cadena.replace(".", "").replace(',', '.'); try{ Double.parseDouble(newCadena); } catch (NumberFormatException nfe2){ return false; } } return true; } }
Esta clase lo que hace es utilizar el "DefaultTableCellRenderer" para dar el formato a las tablas, segun las reglas que nosotros quisieramos definir, palabras reservadas, string, numeros, celdas vacias, etc.
Paso 3: en el JFrame, debemos llamar a esta clase "FormatoTabla.java" de la siguiente manera:
public interfaz() { initComponents(); //se asigna el formato a la tabla jTable1.setDefaultRenderer (Object.class, new FormatoTabla()); }
16 comentarios:
Excelente aporte, estuve tratando de hacer algo así, pero solo me funcionaba haciendo clic en el jtabla, ahoro si gracias a ti.
Slds
Muy bueno el aporte, agradezco que compartan ayudas asi..
Saludos..
Cin
Gracias por todos estos buenos tutoriales me han ayudado mucho como programador y no solo en java. Sabe como le puedo colocar un row header a un jtable(gracias por cualquier ayuda que me pueda brindar)
Muchas gracias por el aporte, esta interesante.
Saludos...
Muy buen aporte, gracias mouse me sirvió de mucho
muy bueno tu aporte, bueno quisiera saber como hacer lo siguiente tengo una tabla de cuotas con fecha de vencimiento, cuando la fecha actual sea mayor a la fecha de vencimiento, que en el jtable la columna aparesca de color rojo
Gracias por el ejemplo, una duda como puedo hacer que se vean las líneas de las celdas por que al aplicar tu ejemplo no se muestran los bordes de las celda
muy muy buen aporte..... creo que la bibliotecas de java tienen que tener todas estas herramientas y dejarnos utilizar de una manera mas eficaz los Jtable.......
Jc_Mouse me sale un error en el proyecto de Contactos que te sigo me sale error null porque???
lang.NullPointerException me podrias ayudar?? te lo agradeceria inmensamente
Amigo mouse me prodrias ayudar con este error: ??
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException me dice error null
en tu proyecto que hago de Contactos porque??
el error esta inccompleto, te dice que encuentr4a unn valor NULL en alguna propiedad o clase, pega un par de lineas mas del error que te sale
Amigo Mouse ya busque por muchos lados y tube solucion...
igual te agradezco por responder al comnetario muchisimas gracias amigo por sus proyectos me ha servido de mucho...
y no sin antes como siempre pidiendo un favor: es que tengo una aplicacion que inserta en la base de datos pero quiero que el momento de insertar me saque un mensaje si el codigo ya existe en la base de datos ??? como es el codigo en java de casualidad no tienes un proecto asi???
NOTA: la base datos en el campo codigo lo tengo numerico..
muchas gracias por su atencion
Hola amigo y si quiero que una celda numerica cambie de color por ejemplo comparando con una caja de texto por ejemplo en la celda dle jtable dice 30 y en la caja de texto 40, si es mayor sera rojo y si es menor azul, como haria saludos
pues una comparacion con IF, pero antes si trabajas con valores numericos debes comprobar que estos sean correctos, todo esto en el DefaultTableCellRenderer, ojo que la condicion la de debes indicar para filas o columnas en general, aunque tambien puedes especificar para una celda en particular con row,column
gracias por compartir
Publicar un comentario