Ho risolto impostando una dimensione predefinita al frame (setSize); in questo modo tutto fila liscio.
Probabilmente era il metodo pack che mi dava problemi.
Comunque questo è il mio metodo che ridisegna l'interfaccia grafica:
codice:
//Ricarica l'interfaccia grafica
public void setup(){
centralPanel.removeAll();
frame.remove(playerPanel);
frame.remove(computerPanel);
primaCartaSelezionata=-1;
secondaCartaSelezionata=-1;
suAltroMazzo = false;
MossaButton mossaButton = new MossaButton();
JButton cancelButton = new JButton("Annulla");
cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
gui.setup();
}
});
centralPanel.add(mossaButton);
centralPanel.add(cancelButton);
playerPanel = creaPannelloCarte(mazzoPlayer,new SelezioneCartaPlayerListener());
computerPanel = creaPannelloCarte(mazzoComputer, new SelezioneCartaPCListener());
playerPanel.repaint();
playerPanel.doLayout();
computerPanel.repaint();
computerPanel.doLayout();
frame.add(playerPanel,BorderLayout.SOUTH);
frame.add(computerPanel,BorderLayout.NORTH);
//frame.pack();
frame.repaint();
frame.validate();
//frame.doLayout();
frame.setSize(1000,400);
frame.setVisible(true);
}