-Imagino que no podré reutilizar el código que uso para el primer personaje, ya que si lo usara, no tendría 5 personajes por jugador, sino un mismo personaje repetido 5 veces, y no podría usar los botones de cada personaje de forma independiente, por lo que optado por hacerlo de la misma forma que cree el primero, creando un JPanel y añadiéndole un GridBagLayout().
No se si lo que estoy haciendo es correcto, aunque creo que si.
-Tampoco se si hay alguna forma mejor de hacer lo que pretendo o de reutilizar el código.
Aquí os dejo mi código. Gracias a todos!
Código:
public Tab() { //subpanel central. central-norte JPanel subpanelCentral_CentralNorte = new JPanel(); //creamos la estructura subpanelCentral_CentralNorte.setLayout (new GridBagLayout()); //creamos el esquema de la estructura //label ataque GridBagConstraints constraints = new GridBagConstraints(); Label at=new Label(); at.setText("Ataque:"); constraints.gridx = 1; // empieza en la columna cero. constraints.gridy = 0; // empieza en la fila cero constraints.gridwidth = 1; // ocupa dos columnas. constraints.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte.add (at, constraints); //cajatexto ataque JTextField ataque = new JTextField("A",1); constraints.gridx = 1; // empieza en la columna cero. constraints.gridy = 1; // empieza en la fila cero constraints.gridwidth = 1; // ocupa dos columnas. constraints.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte.add (ataque, constraints); //cajatexto unidad JTextField unidad = new JTextField("U",1); constraints.gridx = 0; // empieza en la columna cero. constraints.gridy = 2; // empieza en la fila cero constraints.gridwidth = 1; // ocupa dos columnas. constraints.gridheight = 2; // ocupa 2 filas. constraints.weighty=1.0; subpanelCentral_CentralNorte.add (unidad, constraints); constraints.weighty=0.0; //boton atacar JButton bAtacar = new JButton("Atacar"); constraints.gridx = 0; // empieza en la columna cero. constraints.gridy = 5; // empieza en la fila cero constraints.gridwidth = 1; // ocupa dos columnas. constraints.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte.add (bAtacar, constraints); //boton defender JButton bDefender = new JButton("Defender"); constraints.gridx = 1; // empieza en la columna cero. constraints.gridy = 5; // empieza en la fila cero constraints.gridwidth = 1; // ocupa dos columnas. constraints.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte.add (bDefender, constraints); //subpanel central. central-norte JPanel subpanelCentral_CentralNorte2 = new JPanel(); //creamos la estructura subpanelCentral_CentralNorte2.setLayout (new GridBagLayout()); //creamos el esquema de la estructura //cajatexto unidad JTextField unidad2 = new JTextField("U",1); constraints2.gridx = 0; // empieza en la columna cero. constraints2.gridy = 2; // empieza en la fila cero constraints2.gridwidth = 1; // ocupa dos columnas. constraints2.gridheight = 2; // ocupa 2 filas. constraints2.weighty=1.0; subpanelCentral_CentralNorte2.add (unidad2, constraints2); constraints2.weighty=0.0; //label defensa Label de2=new Label(); de.setText("Defensa:"); constraints2.gridx = 1; // empieza en la columna cero. constraints2.gridy = 2; // empieza en la fila cero constraints2.gridwidth = 1; // ocupa dos columnas. constraints2.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte2.add (de2, constraints2); //cajatexto def JTextField defensa2 = new JTextField("D",1); constraints2.gridx = 1; // empieza en la columna cero. constraints2.gridy = 3; // empieza en la fila cero constraints2.gridwidth = 1; // ocupa dos columnas. constraints2.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte2.add (defensa2, constraints2); //label vida Label vi2=new Label(); vi2.setText("Vida Restante:"); constraints2.gridx = 0; // empieza en la columna cero. constraints2.gridy = 4; // empieza en la fila cero constraints2.gridwidth = 1; // ocupa dos columnas. constraints2.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte2.add (vi2, constraints2); //caja texto vida JTextField vida2 = new JTextField("V",1);//le metemos una casilla constraints2.gridx = 1; // empieza en la columna cero. constraints2.gridy = 4; // empieza en la fila cero constraints2.gridwidth = 1; // ocupa dos columnas. constraints2.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte2.add (vida2, constraints2); //boton atacar JButton bAtacar2 = new JButton("Atacar"); constraints2.gridx = 0; // empieza en la columna cero. constraints2.gridy = 5; // empieza en la fila cero constraints2.gridwidth = 1; // ocupa dos columnas. constraints2.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte2.add (bAtacar2, constraints2); //boton defender JButton bDefender2 = new JButton("Defender"); constraints2.gridx = 1; // empieza en la columna cero. constraints2.gridy = 5; // empieza en la fila cero constraints2.gridwidth = 1; // ocupa dos columnas. constraints2.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte2.add (bDefender2, constraints2); //boton desplazar izq JButton bDesplazarIzq2 = new JButton("Desplazar Izq"); constraints2.gridx = 0; // empieza en la columna cero. constraints2.gridy = 6; // empieza en la fila cero constraints2.gridwidth = 1; // ocupa dos columnas. constraints2.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte2.add (bDesplazarIzq2, constraints2); //boton desplazar der JButton bDesplazarDer2 = new JButton("Desplazar Der"); constraints2.gridx = 1; // empieza en la columna cero. constraints2.gridy = 6; // empieza en la fila cero constraints2.gridwidth = 1; // ocupa dos columnas. constraints2.gridheight = 1; // ocupa 2 filas. subpanelCentral_CentralNorte2.add (bDesplazarDer2, constraints2); //panel central //subpanel norte JPanel subpanelCentral_Norte = new JPanel(); subpanelCentral_Norte.setLayout(new FlowLayout()); subpanelCentral_Norte.add(subpanelCentral_CentralNorte); subpanelCentral_Norte.add(subpanelCentral_CentralNorte2); //subpanel central JPanel subpanelCentral_Centro = new JPanel(); subpanelCentral_Centro.setLayout(new FlowLayout()); JTextArea mensajeEnPartida = new JTextArea(1,20); mensajeEnPartida.setEditable(false); Font fuente = new Font ("",Font.BOLD,15); mensajeEnPartida.setFont(fuente); subpanelCentral_Centro.add(mensajeEnPartida); //subpanel sur JPanel subpanelCentral_Sur = new JPanel(); subpanelCentral_Sur.setLayout(new FlowLayout()); subpanelCentral_Sur.add(subpanelCentral_Norte); //add(subpanelCentral_CentralNorte); //panel central JPanel panelCentral = new JPanel(); panelCentral.setLayout(new BorderLayout()); panelCentral.add(subpanelCentral_Norte,BorderLayout.NORTH); panelCentral.add(subpanelCentral_Centro,BorderLayout.CENTER); panelCentral.add(subpanelCentral_Sur,BorderLayout.SOUTH); //panel oeste JPanel panelOeste = new JPanel(); panelOeste.setLayout(new FlowLayout()); JButton p = new JButton("Prueba"); panelOeste.add(p); //panel principal (oeste+central) setLayout(new BorderLayout()); add(panelCentral,BorderLayout.CENTER); add(panelOeste,BorderLayout.WEST); } }//fin tablero