muy bueno amigo pero tengo una pregunta , despues de que haces eso se deja de ver el selection mode , osea ya no se pinta de azul toda la fila que estas seleccionando con el cursor, hay alguna forma de que se pueda ver de nuevo? saludos!
Hola Aldo. Buena tu pregunta, se me fue ese detalle al hacer el vídeo. Pasa que al hacer un override sobre el método prepareRenderer en la clase DTable, todo el proceso de "pintado" de celdas fue reemplazado. Haz lo siguiente: Luego de las primeras 3 lineas de prepareRenderer incluye este código: if (isRowSelected(rowIndex)){ component.setBackground(this.getSelectionBackground()); component.setForeground(this.getSelectionForeground()); } Bienvenido al canal.
Muy buen tutorial, mi estimado. Me suscribo y ojalá se suscriban más personas a su canal, porque se lo merece. Me gustaría que en algún momento haga unos tutoriales extras sobre la JTable, como el insertar botones en las celdas y que activen algo al darles click.
Muchas gracias por suscribirse!!!. . Si, estoy recibiendo bastantes sugerencias sobre el mismo tema. Vendran mas videos que incluyan lo principal de todo en ejemplos prácticos. Que tenga un buen dia.
Hola me gustó tu explicación, muy practica y fácil de entender. ¿Podrías hacer un videotutorial de como renderizar la tabla para poder cambiar las propiedades del encabezado como el color de fondo o el color, tipo y tamaño de letra?.
Amigo, me sale perfecto el cambio de colores. El problema es que al mostrar los datos de una tabla mysql, los colores de la tabla no cambian, pero si lo hago sin conexión (introduciendo manualmente los datos) si funciona, ¿podrías ayudarme con esto?
Si, puedes. JTable tiene funciones para obtener los datos de sus celdas. Al obtener sus datos podemos almacenar estos en base de datos (o en algún otro medio). Para esos casos se tiene que implementar métodos y funciones de acceso a base de datos.
Disculpe una consulta me sale perfecto el código pero quisiera saber, en donde debo cambiar para que en vez que solo una celda se cambie color sea mejor que toda la fila se cambie?
Hola y gracias por compartir tus dudas. En el video en min. 08:03 tendrias que reemplazar las condiciones que explico. Reemplazar por esto: if ((getValueAt(rowIndex, 1)!=null)){ float val = Float.parseFloat(getValueAt(rowIndex, 1).toString()); if (val
tal vez no tenga mucho que ver con el tema del video, pero quiero saber porque no puedo utilizar el addRow... Necesito alguna librería determinada o que pasa?? estuve investigando en foros pero no encontre nada
Hola Jaik. Para valores booleanos el componente mas apropiado es el Checkbox y está definido dentro del propio JTable. Para implementar radio buttons se necesita codificar mas, pero dependiendo del caso puede ser mas fácil implementar combobox. Te invito a inscribirte al canal para impulsar la creación de mas tutoriales.
hola Adailton. Disculpa el atraso en responder. Respecto a tu pregunta: Si te refieres a cambiar el color de celda dependiendo de una columna de tipo boolean, he visto que eso ocurre solo con la apariencia "Nimbus", con todas las otras (Metal, Windows, Motif) funciona perfectamente. Para cambiar la apariencia busca en el código del formulário esta línea: if ("Nimbus".equals(info.getName())) { Y cambiala por "Metal" o "Windows": if ("Metal".equals(info.getName())) { Éxitos.
tengo una tabla que tiene muchas columnas del mismo tipo, pero solo quiero modificar el color a una de estas columnas, sin modificar las otras. ¿alguien sabe como seria?
Amigo, tengo un problema un poco diferente. No quiero que el color de la línea cambie cuando inserto un valor en ella, quiero que después de llenar la tabla, pueda barrer todas sus celdas y aplicar un color diferente a cada una de ellas dependiendo de alguna verificación que hice. ¿Sabría cómo ayudarme?
Hola Chrysthian. Lo que se me viene a la mente es que: 1) tendrías que crear una propiedad boolean checkValues en la clase DTable (explicado en el video). Esta propiedad va iniciar en false. 2) Crear un método que altere ese valor: public void setCheckValues(boolean checkValues) { this.checkValues = checkValues; } 3) Llamar a ese método mediante un botón. Ya en el método se verifica si el valor de checkValues es true. Solo si el valor es true verificar que los valores de las celdas cumplan las condicionantes necesarias. Éxitos.
como defino el ancho de las columnas.... solo se ajustan al tamaño del titulo de la columna.... pero quiero definir un tamaño mayor al titulo de la columna
Hola Alex. El ancho de las columnas puedes definirlo desde el editor de netbeans. Click derecho->Table contents->Columns. En cada columna tendrás el campo "Pref. Width", que será donde definas el ancho de esa columna. Tambien puedes definir el ancho mínimo y máximo.
Hola muy buen video pero tengo una pregunta. Tengo el siguiente codigo y lo que quiero saber es de donde obtiene el valor "int column" ya que quiero que evalue la columna 5 pero tiene asignado la columna 2. Esta es la clase: public class ColorCelda extends DefaultTableCellRenderer { private JLabel componente;
@Override public Component getTableCellRendererComponent(JTable jtable, Object value, boolean isSelected , boolean hasFocus, int row, int column) { componente= (JLabel)super.getTableCellRendererComponent(jtable, value, isSelected, hasFocus, row, column); if(column==5){ int valor=(int)value; // String valor=(String)value; if(valor!=0){ componente.setBackground(Color.LIGHT_GRAY); componente.setForeground(Color.WHITE); } } return componente; } la manera como la llamo es la siguiente: Tabdetalleped.setDefaultRenderer(Integer.class, new ColorCelda()); Gracias por tu ayuda.
Hola Adalberto, bienvenido al canal. Respecto a tu pregunta: depende del método que utilices. En tu caso estas usando getTableCellRendererComponent, este método es usado para configurar el renderizador de celdas antes del pintado de cada celda (el pintado de componentes es ejecutado a cualquier momento de forma automática). Me parece que a tu codigo le falta un ELSE o algo que coloque los colores por default.
Hola Carlos. Para recorrer un JTable puedes usar un for y verificar si el valor de esa columna es TRUE. Por ejemplo: int totalRows = tblDatos.getRowCount(); for (int row=0; row < totalRows; row++) { Boolean isChecked = (Boolean) tblDatos.getValueAt(i, 2); //2 es el indice de la columna que se va verificar if (isChecked) { // Ejecutas aqui el método para guardar los datos de esta fila } } Esa es la idea. Te invito a inscribirte al canal para impulsar la creación de mas videos.
Hi Annisa and welcome to my channel. In the future I will do it. Meanwhile, please activate the automatic subtitles. Some words are not translated correctly but I think it is understood. I just checked. Have a nice day.
muy bueno amigo pero tengo una pregunta , despues de que haces eso se deja de ver el selection mode , osea ya no se pinta de azul toda la fila que estas seleccionando con el cursor, hay alguna forma de que se pueda ver de nuevo?
saludos!
Hola Aldo. Buena tu pregunta, se me fue ese detalle al hacer el vídeo. Pasa que al hacer un override sobre el método prepareRenderer en la clase DTable, todo el proceso de "pintado" de celdas fue reemplazado.
Haz lo siguiente: Luego de las primeras 3 lineas de prepareRenderer incluye este código:
if (isRowSelected(rowIndex)){
component.setBackground(this.getSelectionBackground());
component.setForeground(this.getSelectionForeground());
}
Bienvenido al canal.
hey! funciono correctamente! gracias amigo por responder
saludos desde mx
Muy buen tutorial, mi estimado. Me suscribo y ojalá se suscriban más personas a su canal, porque se lo merece.
Me gustaría que en algún momento haga unos tutoriales extras sobre la JTable, como el insertar botones en las celdas y que activen algo al darles click.
Muchas gracias por suscribirse!!!. .
Si, estoy recibiendo bastantes sugerencias sobre el mismo tema. Vendran mas videos que incluyan lo principal de todo en ejemplos prácticos.
Que tenga un buen dia.
Excelente video gracias
Hola me gustó tu explicación, muy practica y fácil de entender. ¿Podrías hacer un videotutorial de como renderizar la tabla para poder cambiar las propiedades del encabezado como el color de fondo o el color, tipo y tamaño de letra?.
Perfecto, un gustazo de video, muchas gracias por el esfuerzo
Excelente vídeo amigo justamente esto estaba realizando en un ejercicio y no me salían algunas cosas...
Gracias por el comentario, y que bueno saber que está siendo de ayuda.
Es un dios! Gracias
Excelente vídeo muy claro me sirvió mucho. Muchisimas gracias
Que bueno Jackeline, me alegra saberlo.
Amigo, me sale perfecto el cambio de colores.
El problema es que al mostrar los datos de una tabla mysql, los colores de la tabla no cambian, pero si lo hago sin conexión (introduciendo manualmente los datos) si funciona, ¿podrías ayudarme con esto?
de una tabla de este tipo puedo, utilizar los datos para generar registros aleatorios en una base de datos?
Si, puedes.
JTable tiene funciones para obtener los datos de sus celdas. Al obtener sus datos podemos almacenar estos en base de datos (o en algún otro medio). Para esos casos se tiene que implementar métodos y funciones de acceso a base de datos.
Muy bueno!!!! GRACIAS
hey how to have multiple lines inside the table cell?
Disculpe una consulta me sale perfecto el código pero quisiera saber, en donde debo cambiar para que en vez que solo una celda se cambie color sea mejor que toda la fila se cambie?
Hola y gracias por compartir tus dudas. En el video en min. 08:03 tendrias que reemplazar las condiciones que explico. Reemplazar por esto:
if ((getValueAt(rowIndex, 1)!=null)){
float val = Float.parseFloat(getValueAt(rowIndex, 1).toString());
if (val
Muchas gracias por tu ayuda, pude solucionarlo antes de tu respuesta. pero me vale para otras situaciones. :D
@@Williamscafdev podrias compartir dicha respuestA?
tal vez no tenga mucho que ver con el tema del video, pero quiero saber porque no puedo utilizar el addRow... Necesito alguna librería determinada o que pasa?? estuve investigando en foros pero no encontre nada
Se puede hacer lo mismo con RadioButtons ?
Hola Jaik. Para valores booleanos el componente mas apropiado es el Checkbox y está definido dentro del propio JTable. Para implementar radio buttons se necesita codificar mas, pero dependiendo del caso puede ser mas fácil implementar combobox.
Te invito a inscribirte al canal para impulsar la creación de mas tutoriales.
Muy interesante el tutorial. ¿Cómo puedo que el formato de la celda persista cuando el campo es booleano? Cuando pierde el foco el formato sale.
hola Adailton. Disculpa el atraso en responder.
Respecto a tu pregunta: Si te refieres a cambiar el color de celda dependiendo de una columna de tipo boolean, he visto que eso ocurre solo con la apariencia "Nimbus", con todas las otras (Metal, Windows, Motif) funciona perfectamente.
Para cambiar la apariencia busca en el código del formulário esta línea:
if ("Nimbus".equals(info.getName())) {
Y cambiala por "Metal" o "Windows":
if ("Metal".equals(info.getName())) {
Éxitos.
tengo una tabla que tiene muchas columnas del mismo tipo, pero solo quiero modificar el color a una de estas columnas, sin modificar las otras. ¿alguien sabe como seria?
Amigo, tengo un problema un poco diferente. No quiero que el color de la línea cambie cuando inserto un valor en ella, quiero que después de llenar la tabla, pueda barrer todas sus celdas y aplicar un color diferente a cada una de ellas dependiendo de alguna verificación que hice. ¿Sabría cómo ayudarme?
Hola Chrysthian. Lo que se me viene a la mente es que:
1) tendrías que crear una propiedad boolean checkValues en la clase DTable (explicado en el video). Esta propiedad va iniciar en false.
2) Crear un método que altere ese valor:
public void setCheckValues(boolean checkValues) {
this.checkValues = checkValues;
}
3) Llamar a ese método mediante un botón.
Ya en el método se verifica si el valor de checkValues es true. Solo si el valor es true verificar que los valores de las celdas cumplan las condicionantes necesarias.
Éxitos.
Muchas gracias!
como defino el ancho de las columnas.... solo se ajustan al tamaño del titulo de la columna.... pero quiero definir un tamaño mayor al titulo de la columna
Hola Alex. El ancho de las columnas puedes definirlo desde el editor de netbeans. Click derecho->Table contents->Columns. En cada columna tendrás el campo "Pref. Width", que será donde definas el ancho de esa columna. Tambien puedes definir el ancho mínimo y máximo.
No me funcionó, no me dejó hacer lo ultimo que es cambiar el JTable por el DTable
igual no me funciono :(
Hola muy buen video pero tengo una pregunta.
Tengo el siguiente codigo y lo que quiero saber es de donde obtiene el valor "int column"
ya que quiero que evalue la columna 5 pero tiene asignado la columna 2.
Esta es la clase:
public class ColorCelda extends DefaultTableCellRenderer {
private JLabel componente;
@Override
public Component getTableCellRendererComponent(JTable jtable, Object value, boolean isSelected , boolean hasFocus, int row, int column) {
componente= (JLabel)super.getTableCellRendererComponent(jtable, value, isSelected, hasFocus, row, column);
if(column==5){
int valor=(int)value;
// String valor=(String)value;
if(valor!=0){
componente.setBackground(Color.LIGHT_GRAY);
componente.setForeground(Color.WHITE);
}
}
return componente;
}
la manera como la llamo es la siguiente:
Tabdetalleped.setDefaultRenderer(Integer.class, new ColorCelda());
Gracias por tu ayuda.
Hola Adalberto, bienvenido al canal. Respecto a tu pregunta: depende del método que utilices. En tu caso estas usando getTableCellRendererComponent, este método es usado para configurar el renderizador de celdas antes del pintado de cada celda (el pintado de componentes es ejecutado a cualquier momento de forma automática). Me parece que a tu codigo le falta un ELSE o algo que coloque los colores por default.
Necesito que los campos seleccionados con checkbox se guarden en una tabla de una base de datos, como hacerlo, alguien que me pueda ayudar??
Hola Carlos. Para recorrer un JTable puedes usar un for y verificar si el valor de esa columna es TRUE. Por ejemplo:
int totalRows = tblDatos.getRowCount();
for (int row=0; row < totalRows; row++) {
Boolean isChecked = (Boolean) tblDatos.getValueAt(i, 2); //2 es el indice de la columna que se va verificar
if (isChecked) {
// Ejecutas aqui el método para guardar los datos de esta fila
}
}
Esa es la idea.
Te invito a inscribirte al canal para impulsar la creación de mas videos.
Link del proyecto para que el público de youtube lo estudie
Me puedes hacer un trabajo? 😊🤗
Can you give english subtitle?
Hi Annisa and welcome to my channel.
In the future I will do it. Meanwhile, please activate the automatic subtitles. Some words are not translated correctly but I think it is understood. I just checked.
Have a nice day.
David Ticona Saravia but, i check now it still transalte in spanyol 😢😢
Annisa
Click the settings icon(Gear icon) at the bottom of the video screen >> Subtitles/CC >> Auto-translate >> English