Redimensionamento das letras nos botões

Baixem este .jar para você ver o que eu quero lhe dizer

O jogo da velha está em resolução 200x200, com o mouse, redimensione a janela para uma resolução bem menor, por exemplo e tente jogar, o que aparece nos botões em vez de X ou O é “…”.
https://skydrive.live.com/#cid=0FAD79BBDD195383&id=FAD79BBDD195383%21137

Eu quero poder executar em qualquer resolução em que o X e O aparecessem em vez de “…”.

PS: em Jogo da Velha.jar, clique com o botão direito do mouse, depois clique em baixar, tente executá-lo.

Guilherme Albuquerque
Acho que a solução mais simples seria bloquear o redimensionamento da tela com setResizable(false). Outra opção seria definir o minimumSize (com setMinimumSize() ) para 200,200. Assim, o usuário poderia aumentar a tela, inclusive maximizar, mas nunca deixá-la menor que 200x200.

Abraço.

Outra forma é não usar uma fonte para desenhar o O ou o X (ou seja, não usar texto), mas desenhar o O ou o X dependendo do tamanho do botão.

Como são formas geométricas simples, o único problema é determinar a grossura do “stroke” usado para desenhar o X ou o O.

[quote=TerraSkilll]Guilherme Albuquerque
Acho que a solução mais simples seria bloquear o redimensionamento da tela com setResizable(false). Outra opção seria definir o minimumSize (com setMinimumSize() ) para 200,200. Assim, o usuário poderia aumentar a tela, inclusive maximizar, mas nunca deixá-la menor que 200x200.

Abraço.[/quote]
Ok, muito grato :smiley: , agora é o seguinte, se você baixou o arquivo .jar no SkyDrive e jogou, deve ter percebido que quando alguém ou ninguém ganha, ele não inicia outra partida.
Segue abaixo o código-fonte:

package jogo;


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Jogodavelha implements ActionListener {

        //Instanciar Variáveis

        private JFrame janela = new JFrame("Jogo da Velha");

        private JButton button1 = new JButton("");

        private JButton button2 = new JButton("");

        private JButton button3 = new JButton("");

        private JButton button4 = new JButton("");

        private JButton button5 = new JButton("");

        private JButton button6 = new JButton("");

        private JButton button7 = new JButton("");

        private JButton button8 = new JButton("");

        private JButton button9 = new JButton("");

        private String letter = "";

        private int count = 0;

        private boolean win = false;

        

        public Jogodavelha(){

        //Criar Janela do Jogo
        
        janela.setResizable(false);
        
        janela.setSize(200,200);

        janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        janela.setLayout(new GridLayout(3,3));

        

        //Adicionar botões ao Jogo

        janela.add(button1);

        janela.add(button2);

        janela.add(button3);

        janela.add(button4);

        janela.add(button5);

        janela.add(button6);

        janela.add(button7);

        janela.add(button8);

        janela.add(button9);

        

        //Adicionar o ActionListener aos Botões

        button1.addActionListener(this);

        button2.addActionListener(this);

        button3.addActionListener(this);

        button4.addActionListener(this);

        button5.addActionListener(this);

        button6.addActionListener(this);

        button7.addActionListener(this);

        button8.addActionListener(this);

        button9.addActionListener(this);

        

        //Tornar a Janela do Jogo Visível

        janela.setVisible(true);

        }

        

        public void actionPerformed(ActionEvent a) {

                count++;

                

                //Calcular de Quem é a Vez

                if(count == 1 || count == 3 || count == 5 || count == 7 || count == 9){

                letter = "x";

                } else if(count == 2 || count == 4 || count == 6 || count == 8 || count == 10){

                letter = "o";

                }

                

                //Mostrar x ou o nos Botões

                if(a.getSource() == button1){

                        button1.setText(letter);

                        button1.setEnabled(false);

                } else if(a.getSource() == button2){

                        button2.setText(letter);

                        button2.setEnabled(false);

                } else if(a.getSource() == button3){

                        button3.setText(letter);

                        button3.setEnabled(false);

                } else if(a.getSource() == button4){

                        button4.setText(letter);

                        button4.setEnabled(false);

                } else if(a.getSource() == button5){

                        button5.setText(letter);

                        button5.setEnabled(false);

                } else if(a.getSource() == button6){

                        button6.setText(letter);

                        button6.setEnabled(false);

                } else if(a.getSource() == button7){

                        button7.setText(letter);

                        button7.setEnabled(false);

                } else if(a.getSource() == button8){

                        button8.setText(letter);

                        button8.setEnabled(false);

                } else if(a.getSource() == button9){

                        button9.setText(letter);

                        button9.setEnabled(false);

                }

                

                //Determine Quem Ganhou

                //Ganhar na horizontal

                if( button1.getText() == button2.getText() && button2.getText() == button3.getText() && button1.getText() != ""){

                        win = true;

                }

                else if(button4.getText() == button5.getText() && button5.getText() == button6.getText() && button4.getText() != ""){

                        win = true;

                }

                else if(button7.getText() == button8.getText() && button8.getText() == button9.getText() && button7.getText() != ""){

                        win = true;

                }

                

                //Ganhar na vertical

                else if(button1.getText() == button4.getText() && button4.getText() == button7.getText() && button1.getText() != ""){

                        win = true;

                }

                else if(button2.getText() == button5.getText() && button5.getText() == button8.getText() && button2.getText() != ""){

                        win = true;

                }

                else if(button3.getText() == button6.getText() && button6.getText() == button9.getText() && button3.getText() != ""){

                        win = true;

                }

                

                //Ganhar na diagonal 

                else if(button1.getText() == button5.getText() && button5.getText() == button9.getText() && button1.getText() != ""){

                        win = true;

                }

                else if(button3.getText() == button5.getText() && button5.getText() == button7.getText() && button3.getText() != ""){

                        win = true;

                }

                else {

                        win = false;

                }

                

                //Mostrar em JOptionPane como diálogo de mensagem se alguém ganhou ou se deu velha

                if(win == true){

                        JOptionPane.showMessageDialog(null,"O jogador de " + letter + " Ganhou!");

                } else if(count == 9 && win == false){

                        JOptionPane.showMessageDialog(null, "Deu Velha!");

                }

        }

        

        public static void main(String[] args){

                new Jogodavelha();

        }

}//Fim da Classe Jogodavelha

Isto é, eu gostaria de iniciar outra partida quando o jogo fosse concluído (alguém ou ninguém ganhasse).

Você precisa de um método para reiniciar o jogo, oras!

Algo do tipo:


public void zerarJogo(){
button1.setText("");
button2.setText("");
button3.setText("");
button4.setText("");
button5.setText("");
button6.setText("");
button7.setText("");
button8.setText("");
button9.setText("");
}

// se o jogo encerrar (com vitória ou empate), exibe a mensagem e zera os buttons
if(win == true){
  JOptionPane.showMessageDialog(null,"O jogador de " + letter + " Ganhou!");
  zerarJogo();
} else if(count == 9 && win == false){
  JOptionPane.showMessageDialog(null, "Deu Velha!");
  zerarJogo();
}

Abraço.

Bacana, o Java tem uma solução lógica para cada problema, o que mostra que tem várias possibilidades, pra isso deve-se ter criatividade, certo?

Legal, agradeço :smiley:

Mas, existe algo de errado com o NetBeans, ou sou eu (o que é mais fácil) porque, quando fiz isso, ele diz:
" expected
could not find symbol" eu detalho melhor abaixo:

[code]public void zerarJogo(){
button1.setText("");
button2.setText("");
button3.setText("");
button4.setText("");
button5.setText("");
button6.setText("");
button7.setText("");
button8.setText("");
button9.setText("");
}

// se o jogo encerrar (com vitória ou empate), exibe a mensagem e zera os buttons
if(win == true){ \aqui o NetBeans diz " expected" could not find symbol;
JOptionPane.showMessageDialog(null,“O jogador de " + letter + " Ganhou!”);
zerarJogo();
} else if(count == 9 && win == false){ \aqui ele diz expected" could not find symbol;
JOptionPane.showMessageDialog(null, “Deu Velha!”);
zerarJogo();
}

     public static void main(String[] args){

         new Jogodavelha();

           }

}[/code]

será melhor usar outro programa? Ou eu estou errado?