NaGLUX escribió:Hola a todos. He intentado buscar la respuesta en el laargo hilo, pero no la he encontrado. Os comento lo que quiero hacer:
Quiero crear una tabla, que represente un mapa, en la que yo vaya seleccionando las celdas quiero que cambien de color, para poder representar por ejemplo las paredes en negro. Hice esto mismo con Builder y no tuve problema. En principio pensé en utilizar un jTable, pero no consigo ni siquiera obtener la tabla de las dimensiones adecuadas. ¿Sabeis con que elemento podria realizarlo?
Gracias
Si lo que quieres es definir el tamaño de la tabla lo normal
es meterla en un JScroll panel y definir este de cierto
tamaño
JScrollPane scrollpanel = new JScrollPane (tabla);
scrollpanel.setPreferredSize(new Dimension(600,450));
Para ajustar el tamaño de las celdas:
tabla.setRowHeight(Y);//ajusta la altura de las filas
//Ajusta el tamaño de las columnas (uno por una)
tabla.getColumnModel().getColumn(i).setMinWidth(X);
tabla.getColumnModel().getColumn(i).setMaxWidth(X);
De esta forma despues no se podrian redimensionar
Si solo ajusta MinWidth las columnas serian de tamaño X
y se podrian estirar ...
tabla.setCellSelectionEnabled(true); //hara que se pueda seleccionar
//una casilla sin seleccionar toda la fila
Para que cambie el color de las celdas tendrias que definir
su CellRender. (para definir un color o comportamiento
especifico
tablaj.setDefaultRenderer(String.class,new miTableCellRenderer());
Este ejemplo lo que hace es un calendario (y pone los domingos en
rojo.
En principio el render devolvera un JLabel y hay por ejemplo
podrias devolver un JLabel con un Icono con el fragmento
de mapa
public class miTableCellRenderer extends DefaultTableCellRenderer
{
public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int column) {
//obtenes el componente por defecto
Component cell = super.getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column);
//si es domingo lo ponemos en rojo
if (column==6){
cell.setForeground( Color.red );
}else{
cell.setForeground(Color.black);
}
return cell;
}
}