Hola!
Estoy creando una aplicación en java con JBuilder, en concreto, intentando hacer el juego de los barcos, y estoy trabajando con tablas. Mi problema está con las filas y columnas no editables, puesto que no muestra ninguna de ellas. Estoy intentando crear una tabla con una fila no editable, es decir con cabecera para las columnas, y no me las muestra. El contenido del array si que lo hace, pero el vector con las cabeceras no. También me gustaría crear una columna no editable para el título de las filas.
Aquí va el código:
package batallanaval;
import javax.swing.*;
import java.awt.*;
public class BatallaNaval extends javax.swing.JFrame{
// Declaración de variables
private javax.swing.JMenuBar jBarraDeMenus;
private javax.swing.JMenu jmnuNueva;
private javax.swing.JMenu jmnuSalir;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JTable jTabFlotaAliada;
private javax.swing.JTable jTabFlotaEnemiga;
private final String[] cabecerafilas = new String[] {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
private final String[] cabeceracolum = new String[]{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"};
private String tablero1[][] = new String[10][10];
private String tablero2[][] = new String[10][10];
public BatallaNaval() {
setTitle("Batalla Naval");
setSize(600, 500);
initComponents();
initTable();
setLocationRelativeTo(null); // centrar la ventana
}
private void initComponents(){
jBarraDeMenus = new javax.swing.JMenuBar();
jmnuNueva = new javax.swing.JMenu();
jmnuSalir = new javax.swing.JMenu();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jmnuNueva.setMnemonic('N');
jmnuNueva.setText("Nueva Partida");
jBarraDeMenus.add(jmnuNueva);
jmnuSalir.setMnemonic('S');
jmnuSalir.setText("Salir");
jBarraDeMenus.add(jmnuSalir);
setJMenuBar(jBarraDeMenus);
// Panel flota aliada
jPanel1.setBorder(new javax.swing.border.TitledBorder("Flota Aliada"));
jTabFlotaAliada = new javax.swing.JTable(tablero1, cabeceracolum);
jPanel1.add(jTabFlotaAliada);
javax.swing.table.TableColumn colum = null;
for (int i = 0; i < jTabFlotaAliada.getColumnCount(); i++)
{
colum = jTabFlotaAliada.getColumnModel().getColumn(i);
if (i < 2)
colum.setPreferredWidth(25);
else
colum.setPreferredWidth(25);
}
jPanel1.setBounds(10, 15, 275, 385);
getContentPane().add(jPanel1);
// Panel flota enemiga
jPanel2.setBorder(new javax.swing.border.TitledBorder("Flota Enemiga"));
jPanel2.setBounds(295, 15, 275, 385);
getContentPane().add(jPanel2);
getContentPane().setLayout(null);
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(java.awt.event.WindowEvent evt)
{
exitForm(evt);
}
});
}
private void initTable()
{
for (int x=0; x<10; x++)
{
for (int y=0; y<10; y++)
{
tablero1[x][y] = "A";
tablero2[x][y] = "0";
}
}
}
private void jmItemSalirActionPerformed(java.awt.event.ActionEv ent evt)
{
System.exit(0);
}
/** Salir de la aplicación */
private void exitForm(java.awt.event.WindowEvent evt)
{
System.exit(0);
}
public static void main(String args[])
{
new BatallaNaval().setVisible(true);
}
}