Dúvida - Jogo da Velha

Fala galera, beleza?? É o seguinte, estou desenvolvendo um jogo da velha, mas estou tendo dúvidas. Eu Criei JLabels 3x3, mas o problema é que quando o usuário digita X por exemplo, quando movo o valor para o JLabel, o tamanho do JLabel é redimensionado, ferrando todo o layout da tela. Alguém tem alguma solução???

Valeu!!

Qual layout você está utilizando?

Se você usar o GridLayout em um JPanel acredito que isso não ocorra.

fw

Vo tenta e já retorno aqui, valeu!

Cara, não deu certo… Os JLabels continuam mudando de tamanho quando altero a descrição deles.

Acho que você está tendo problemas com os layouts, veja o exemplo que fiz:

[code]public class MainApp extends javax.swing.JFrame {

/** Creates new form MainApp */
public MainApp() {
    initComponents();
}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

    jPanel1 = new javax.swing.JPanel();
    jLabel1 = new javax.swing.JLabel();
    jLabel7 = new javax.swing.JLabel();
    jLabel9 = new javax.swing.JLabel();
    jLabel5 = new javax.swing.JLabel();
    jLabel4 = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jLabel6 = new javax.swing.JLabel();
    jLabel8 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("teste");

    jPanel1.setBackground(new java.awt.Color(255, 255, 0));
    jPanel1.setLayout(new java.awt.GridLayout(3, 3, 2, 2));

    jLabel1.setText("jLabel1");
    jLabel1.setOpaque(true);
    jPanel1.add(jLabel1);

    jLabel7.setText("jLabel7");
    jLabel7.setOpaque(true);
    jPanel1.add(jLabel7);

    jLabel9.setText("jLabel9");
    jLabel9.setOpaque(true);
    jPanel1.add(jLabel9);

    jLabel5.setText("jLabel5");
    jLabel5.setOpaque(true);
    jPanel1.add(jLabel5);

    jLabel4.setText("jLabel4");
    jLabel4.setOpaque(true);
    jPanel1.add(jLabel4);

    jLabel2.setText("jLabel2");
    jLabel2.setOpaque(true);
    jPanel1.add(jLabel2);

    jLabel6.setText("jLabel6");
    jLabel6.setOpaque(true);
    jPanel1.add(jLabel6);

    jLabel8.setText("jLabel8");
    jLabel8.setOpaque(true);
    jPanel1.add(jLabel8);

    jLabel3.setText("jLabel3");
    jLabel3.setOpaque(true);
    jPanel1.add(jLabel3);

    getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

    pack();
}// </editor-fold>

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new MainApp().setVisible(true);
        }
    });
}

// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
// End of variables declaration

}[/code]

Neste ponto:

jPanel1.setBackground(new java.awt.Color(255, 255, 0)); jPanel1.setLayout(new java.awt.GridLayout(3, 3, 2, 2));

eu fiz duas coisas, defini as cores das linhas do jogo da velha como amarelas e a distância entre um célula e outra do grid como sendo 2.
aqui funcionou, ou seja, posso modificar os valores dos labels, ampliar ou reduzir o form, e o formato da velha é preservado.

tenta aí.

fw

Legal cara, vou tentar!! Obrigado!!!

Dieval, com sua ajuda eu consegui montar o programa ^^

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

public class JogoDaVelia extends JFrame implements ActionListener{
	
	private int jogador = 1;
	int j = 1, flag = 0;
	String jogador1, jogador2;
	private int jogo[][] = new int [3][3];
	String desenho;
	JPanel painel = new JPanel();
	JButton b1 = new JButton("");
	JButton b2 = new JButton("");
	JButton b3 = new JButton("");
	JButton b4 = new JButton("");
	JButton b5 = new JButton("");
	JButton b6 = new JButton("");
	JButton b7 = new JButton("");
	JButton b8 = new JButton("");
	JButton b9 = new JButton("");
	
	public static void main(String args[]) {   
        java.awt.EventQueue.invokeLater(new Runnable() {   
            public void run() {   
                new JogoDaVelia().setVisible(true);   
            }   
        });  }
	
	public JogoDaVelia () {
		iniciarComponentes();
	}
	
	public void iniciarComponentes () {
		painel.add(b1);
		painel.add(b2);
		painel.add(b3);
		painel.add(b4);
		painel.add(b5);
		painel.add(b6);
		painel.add(b7);
		painel.add(b8);
		painel.add(b9);
		
		b1.addActionListener(this);
		b2.addActionListener(this);
		b3.addActionListener(this);
		b4.addActionListener(this);
		b5.addActionListener(this);
		b6.addActionListener(this);
		b7.addActionListener(this);
		b8.addActionListener(this);
		b9.addActionListener(this);
		
		for (int i = 0; i < 3; i++){
			for (int j = 0; j < 3; j++) {
				jogo[i][j] = 0;
			}
		}
		
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		setTitle("Jogo da Velha");
		
		painel.setBackground(new Color(255, 255, 0, 0));
		painel.setLayout(new GridLayout(3, 3, 2, 2));
				
		getContentPane().add(painel, BorderLayout.CENTER);
		
		painel.setVisible(true);
		pack();	
		
		jogador1 = JOptionPane.showInputDialog("Digite o nome do primeiro jogador:");
		jogador2 = JOptionPane.showInputDialog("Digite o nome do segundo jogador:");
	}

	public void actionPerformed(ActionEvent e) {
		if (jogador % 2 == 0) {
			desenho = "O";
			j = 2;			
		}
		else {
			desenho = "X";
			j = 1;
		}
		
		jogador++;
		
		if (e.getSource() == b1) {
				b1.setText(desenho);
				b1.setEnabled(false);
				jogo[0][0] = j;				
		}
		else if (e.getSource() == b2) {
			b2.setText(desenho);
			b2.setEnabled(false);
			jogo[0][1] = j;
		}
		else if (e.getSource() == b3) {
			b3.setText(desenho);
			b3.setEnabled(false);
			jogo[0][2] = j;
		}
		else if (e.getSource() == b4) {
			b4.setText(desenho);
			b4.setEnabled(false);
			jogo[1][0] = j;
		}
		else if (e.getSource() == b5) {
			b5.setText(desenho);
			b5.setEnabled(false);
			jogo[1][1] = j;
		}
		else if (e.getSource() == b6) {
			b6.setText(desenho);
			b6.setEnabled(false);
			jogo[1][2] = j;
		}
		else if (e.getSource() == b7) {
			b7.setText(desenho);
			b7.setEnabled(false);
			jogo[2][0] = j;
		}
		else if (e.getSource() == b8) {
			b8.setText(desenho);
			b8.setEnabled(false);
			jogo[2][1] = j;
		}
		else if (e.getSource() == b9){
			b9.setText(desenho);
			b9.setEnabled(false);
			jogo[2][2] = j;
		}
		
		for (int i = 0; i < 3; i++) {
			if ((jogo[0][i] == 1) && (jogo[1][i] == 1) && (jogo[2][i]) == 1){
				flag = 1;		
			}
			else if((jogo[0][i] == 2) && (jogo[1][i] == 2) && (jogo[2][i]) == 2){
				flag = 2;
			}
		}
		
		for (int i = 0; i < 3; i++) {
			if ((jogo[i][0] == 1) && (jogo[i][1] == 1) && (jogo[i][2]) == 1){
				flag = 1;		
			}
			else if ((jogo[i][0] == 2) && (jogo[i][1] == 2) && (jogo[i][2]) == 2){
				flag = 2;
			}
		}

		if ((jogo[0][0] == 1) && (jogo[1][1] == 1) && (jogo[2][2] == 1))
				flag = 1;
		else if ((jogo[0][0] == 2) && (jogo[1][1] == 2) && (jogo[2][2] == 2))
				flag = 2;
		
		if ((jogo[0][2] == 1) && (jogo[1][1] == 1) && (jogo[2][0] == 1))
			flag = 1;
	else if ((jogo[0][2] == 2) && (jogo[1][1] == 2) && (jogo[2][0] == 2))
			flag = 2;
	
	if (jogador > 9) {
		JOptionPane.showMessageDialog(null, "Deu velha!!");
		b1.setEnabled(false);
		b2.setEnabled(false);
		b3.setEnabled(false);
		b4.setEnabled(false);
		b5.setEnabled(false);
		b6.setEnabled(false);
		b7.setEnabled(false);
		b8.setEnabled(false);
		b9.setEnabled(false);
	} else	if (flag == 1 || flag == 2){
		if (flag == 1)
			JOptionPane.showMessageDialog(null, "O jogador " + jogador1 + " venceu!");
		else
			JOptionPane.showMessageDialog(null, "O jogador " + jogador2 + " venceu!");
		b1.setEnabled(false);
		b2.setEnabled(false);
		b3.setEnabled(false);
		b4.setEnabled(false);
		b5.setEnabled(false);
		b6.setEnabled(false);
		b7.setEnabled(false);
		b8.setEnabled(false);
		b9.setEnabled(false);
	} 

	}
}

Ficou simples, mas era mais ou menos o que eu queria… Agora vou tentar montar Single Player… Se tiver alguma sugestão ou correção no meu programa, fique a vontade. Valeu abraços!!