Problema con el ancho de las columnas de un jtable
Amigo buenos días, me podría ayudar, ¿quiero cambiar el ancho de las columnas de un jtable y no me cambia vi una clase la cual pegue en mi jtable pero no cambian las columnas del jtable como funciona ese ejemplo que esta en el internet?
Respuesta de dimondi21
1
1
dimondi21, 9° Ciclo de Ing
El problema que comentas es sencillísimo de resolver,
La sintaxis es la siguiente
tabla.getColumnModel().getColumn(0).setPreferredWidth(10);
- Donde tabla es tu JTable
- Tabla. GetColumnModel() estrae el modelo de columnas de tu tabla
- GetColumn(0) escoge la columna a la que quieres agregar algún atributo
- SetPreferredWidth(10) define que el ancho de la columna sea de 10 pixeles
Los valores a jugar aquí son el "0" y el "10", no se que clase habrás visto en el internet pero esta lina que te he puesto a mi me ha funcionado siempre.
La sintaxis es la siguiente
tabla.getColumnModel().getColumn(0).setPreferredWidth(10);
- Donde tabla es tu JTable
- Tabla. GetColumnModel() estrae el modelo de columnas de tu tabla
- GetColumn(0) escoge la columna a la que quieres agregar algún atributo
- SetPreferredWidth(10) define que el ancho de la columna sea de 10 pixeles
Los valores a jugar aquí son el "0" y el "10", no se que clase habrás visto en el internet pero esta lina que te he puesto a mi me ha funcionado siempre.
Amigo verá he colocado el código que me indicó pero no me funciona, yo estoy con netbeans 6.8
Será yo le coloco después del initComponents ahí defino el modelo del jtable porque así me indicaron, y en el formulario tengo un botón ver en donde quiero se me visualice el jtable con los anchos de columna adecuados.
Si desea por favor le envío el código de lo que estoy haciendo
Será yo le coloco después del initComponents ahí defino el modelo del jtable porque así me indicaron, y en el formulario tengo un botón ver en donde quiero se me visualice el jtable con los anchos de columna adecuados.
Si desea por favor le envío el código de lo que estoy haciendo
Primero defines tu modelo de la siguiente manera
DefaultTableModel modelo = new DefaultTableModel(nuevo, nombres) {
...
...
...
};
luego tendras el
tabla.setModel(modelo);
Luego le agregas el código que te digo. Cada vez que definas el modelo en cualquier lado debes agregarle la lina abajo que te digo. Xq al cambiar de modelo se setea a default.
No tienen ada que ver que este luego del init ya que yo lo tengo de esta manera
initComponents();
this.setLocationRelativeTo(null);
table.getColumnModel().getColumn(0).setPreferredWidth(10);
table.getColumnModel().getColumn(8).setCellRenderer(new renderer_8_10());
table.getColumnModel().getColumn(10).setCellRenderer(new renderer_8_10());
Y me funciona. Pegar el código aquí seria un crimer jajajaaj, si aun no te funciona
Sube tu proyecto a megaupload o a un servidor y me pegas el link, me lo descargo y te digo tu error
DefaultTableModel modelo = new DefaultTableModel(nuevo, nombres) {
...
...
...
};
luego tendras el
tabla.setModel(modelo);
Luego le agregas el código que te digo. Cada vez que definas el modelo en cualquier lado debes agregarle la lina abajo que te digo. Xq al cambiar de modelo se setea a default.
No tienen ada que ver que este luego del init ya que yo lo tengo de esta manera
initComponents();
this.setLocationRelativeTo(null);
table.getColumnModel().getColumn(0).setPreferredWidth(10);
table.getColumnModel().getColumn(8).setCellRenderer(new renderer_8_10());
table.getColumnModel().getColumn(10).setCellRenderer(new renderer_8_10());
Y me funciona. Pegar el código aquí seria un crimer jajajaaj, si aun no te funciona
Sube tu proyecto a megaupload o a un servidor y me pegas el link, me lo descargo y te digo tu error
Amiguito, yo le pongo así que es lo mismo que tu tienes y no funciona
column = Tabla.getColumnModel().getColumn(0);
column.setPreferredWidth(5);
column = Tabla.getColumnModel().getColumn(1);
Cambio el setPreferredWidt(10) y no pasa nada
column = Tabla.getColumnModel().getColumn(0);
column.setPreferredWidth(5);
column = Tabla.getColumnModel().getColumn(1);
Cambio el setPreferredWidt(10) y no pasa nada
amiguito, le subi a pastbin el link es http://pastebin.com/GEfR2Aht
Ese es del botón ver
Ese es del botón ver
¿Ok ya vi el código pero no entiendo en que parte quieres poner el ancho de columnas y aparte en que parte defines el modelo?
Vera, tengo un formulario con un jtable, el jtable de entrada va a estar no visible, en el momento que yo dígito ver se debe hacer visible el jtable con las columnas del ancho que yo seleccione es decir no muy grandes
El modelo le defino después del init components
Con el ancho que selecciono
¿Ahí está más claro?
El modelo le defino después del init components
Con el ancho que selecciono
¿Ahí está más claro?
Necesito tu proyecto así nomas no te voy a entender súbelo por favor a megaupload o mándamelo por mail [email protected], con palabras no puedo adivinar lo que has programado
Amiguito sabe, vera en un formulario coloco un jtable, ¿en el diseño el jtable no tapa a ningún objeto pero cuando hago ejecutar al formulario si se tapan los demás campos sabe porque es?
Gracias por la atención
Gracias por la atención
Voy a ser claro con ud, no soy adivino para saber porque a ud le sale un error, su pregunta fue como cambio el ancho de las columnas ya le dije como hacerlo, si no le sale es por error de lógica suyo, si desea me pasa su proyecto miro su código y le soluciono su error y le digo porque fue, si no califique la pregunta como le da la gana. ¿Tamos?
El hotmail acepta hasta 10 mb si le alcanza comprima el proyecto y mándamelo si no le alcanza solo mándeme el formulario y la o las clases donde define el modelo y lo asigna a la tabla.
Salí en la tarde por eso no le respondí, he visto su código me parece extraño que no le funcione ya que aquí en mi computadora a la hora de presionar el botón VER LISTA DE BANCOS si me aparece el la columna 0 con 70 y la columna 1 de ancho 280 como lo puso en su código luego del init componentes
this.setLocationRelativeTo(null);
/* Para cambiar el tamaño de las clomunas del grid*/
TableColumn column = null;
column = Tabla.getColumnModel().getColumn(0);
column.setPreferredWidth(71);
column = Tabla.getColumnModel().getColumn(1);
column.setPreferredWidth(280);
activaBotones(true, false, true, false, false);}
Le desactive el comentario y me funciono perfecto, no entiendo en que parte se encuentra su error, ¿o quizás era el botón equivocado? ¿Estoy en lo correcto?
this.setLocationRelativeTo(null);
/* Para cambiar el tamaño de las clomunas del grid*/
TableColumn column = null;
column = Tabla.getColumnModel().getColumn(0);
column.setPreferredWidth(71);
column = Tabla.getColumnModel().getColumn(1);
column.setPreferredWidth(280);
activaBotones(true, false, true, false, false);}
Le desactive el comentario y me funciono perfecto, no entiendo en que parte se encuentra su error, ¿o quizás era el botón equivocado? ¿Estoy en lo correcto?
Verá si le mira que en el jtable la columna 1, la columna está demasiado ancha para el código, eso es lo que quiero arreglar, quiere hacerle más pequeña
Como le estoy diciendo el código funciona perfecto en solo debe cambiar los valores de
column.setPreferredWidth(VALOR QUE LE DE LA GANA );
El código funciona la columna 1 aparece de 71 pixeles y la columna 2 aparece de 280, me parece que ya llegamos a un punto en el que ya no le puedo ayudar.
Como le repido nuevamente y no lo voy a volver a hacer. El código que ud ha proporcionado funciona
El código que esta abajo de initcomponets() o sea este
this.setLocationRelativeTo(null);
/* Para cambiar el tamaño de las clomunas del grid*/
TableColumn column = null;
column = Tabla.getColumnModel().getColumn(0);
column.setPreferredWidth(71);
column = Tabla.getColumnModel().getColumn(1);
column.setPreferredWidth(280);
activaBotones(true, false, true, false, false);}
Funciona perfecto
Si a ud no le funciona, como no me ha querido dar el proyecto completo no le puedo decir exactamente su error, imagino que debe definir nuevamente el modelo y no agregarle el ancho de columna, le adjunto una imagen de que su código si funciona y nuevamente le digo que SI FUNCIONA SU CÓDIGO
Ahí va la imagen
http://imageshack.us/photo/my-images/840/funciona.gif/
column.setPreferredWidth(VALOR QUE LE DE LA GANA );
El código funciona la columna 1 aparece de 71 pixeles y la columna 2 aparece de 280, me parece que ya llegamos a un punto en el que ya no le puedo ayudar.
Como le repido nuevamente y no lo voy a volver a hacer. El código que ud ha proporcionado funciona
El código que esta abajo de initcomponets() o sea este
this.setLocationRelativeTo(null);
/* Para cambiar el tamaño de las clomunas del grid*/
TableColumn column = null;
column = Tabla.getColumnModel().getColumn(0);
column.setPreferredWidth(71);
column = Tabla.getColumnModel().getColumn(1);
column.setPreferredWidth(280);
activaBotones(true, false, true, false, false);}
Funciona perfecto
Si a ud no le funciona, como no me ha querido dar el proyecto completo no le puedo decir exactamente su error, imagino que debe definir nuevamente el modelo y no agregarle el ancho de columna, le adjunto una imagen de que su código si funciona y nuevamente le digo que SI FUNCIONA SU CÓDIGO
Ahí va la imagen
http://imageshack.us/photo/my-images/840/funciona.gif/
Disculpa amiguito por no enviarte el proyecto, estoy por enviarte espero lo puedas aceptar, por favor yo te aviso no quisiera que te enojes, en verdad es solo un poco de temor por eso del plagio aunque seria muy bueno tu que debes de saber me puedas dar tu opinión, en otra parte parece que si me funciona esto del ancho de clomunas porque le defino el famoso modelo, es que otro amigo me dijo que la definición del modelo solo debe hacer una vez
Lo que me incomoda es que a pesar que ya te di la solución para su problema parece que preguntara lo mismo y mientras que deseara que yo adivinase las lineas de código de su proyecto y le dijera cual es su error.
Hay 2 formas de trabajar el JTable,
Como ud sabe la tabla funciona con un modelo que tiene como parámetros 1 vector de Strings en donde van los nombres de las columnas y una matriz de objectos que serian los valores, entonces se puede trabajar de la siguiente manera.
1] Trabajar directamente con la tabla, en donde el modelo se define solo 1 vez, y se le saca se jalan los valores del la tabla y lueo se trabajan y se los vuelven a setear.
2] Trabajar con los propios vectores de las tablas y setearlos mediante el modelo (particularmente me gusta esta) ya que yo puedo tener diferente modelo para cada tipo de comportamiento que podría tener el programa, entonces si ese fuera su caso, si no desea pasarme la aplicación no hay ningún problema, como ya le dije antes, en cada vez que defina su modelo y asignarlo a la tabla, va a tener que hacer las lineas del
column = Tabla.getColumnModel().getColumn(0);
column.setPreferredWidth(71);
Para hacer que su tabla se acomode a la medida de la columna deseada.
Entonces como ya me dijo que ya se soluciono su problema, si no tiene más preguntas, por favor, no olvide de calificar la respuesta.
Hay 2 formas de trabajar el JTable,
Como ud sabe la tabla funciona con un modelo que tiene como parámetros 1 vector de Strings en donde van los nombres de las columnas y una matriz de objectos que serian los valores, entonces se puede trabajar de la siguiente manera.
1] Trabajar directamente con la tabla, en donde el modelo se define solo 1 vez, y se le saca se jalan los valores del la tabla y lueo se trabajan y se los vuelven a setear.
2] Trabajar con los propios vectores de las tablas y setearlos mediante el modelo (particularmente me gusta esta) ya que yo puedo tener diferente modelo para cada tipo de comportamiento que podría tener el programa, entonces si ese fuera su caso, si no desea pasarme la aplicación no hay ningún problema, como ya le dije antes, en cada vez que defina su modelo y asignarlo a la tabla, va a tener que hacer las lineas del
column = Tabla.getColumnModel().getColumn(0);
column.setPreferredWidth(71);
Para hacer que su tabla se acomode a la medida de la columna deseada.
Entonces como ya me dijo que ya se soluciono su problema, si no tiene más preguntas, por favor, no olvide de calificar la respuesta.
disculpa porque el interes de cerrar rápido la pregunta, porque ahorita me urge otra inquietud y en vez de crear otra pregunta me ayudaria en esta mismo, para no crear otra pregunta, pero si desea ya cierro la pregunta, si me va a ayudar por favor?, por ejemplo como blanqueo un combo es decir si pongo txtnumero.setText=""; como puedo hacer lo mismo para un combo
Mi interés de cerrar la pregunta es porque ya vamos desde el día 8 en lo mismo cuando en mi primera respuesta te di la solución... y como voy a solucionar tus dudas, tu tienes 2 problemas resueltos y yo solo tengo 1 puntaje, es un poco injusto...
Pero bueno seria
jComboBox1.setModel(new DefaultComboBoxModel(new String[]{" "}));
El propósito de poner un gran espacio en blanco es para que el combo no se vuelva chiquitito al no tener argumtos.
Pero bueno seria
jComboBox1.setModel(new DefaultComboBoxModel(new String[]{" "}));
El propósito de poner un gran espacio en blanco es para que el combo no se vuelva chiquitito al no tener argumtos.
- Compartir respuesta
- Anónimo
ahora mismo