Propriedades de um JButton, jogo da memória (j2se)

4 respostas
M

Olá a todos, sou novo na linguagem, mas, ja trabalho com programação há vários anos. Estou fazendo um projeto de faculdadade, que é pra desenvolver um jogo da memória 8x8 em j2se. Já estou montando o projeto e estou tento as seguinte dificuldades:

segue meu código ate então:

/**************************************************
 Curso....: ADS (4 periodo)
 Instrutor: Paulo
 Projeto..: Jogo da Memória
 Alunos...: Douglas Lira
            Flávia de Aguiar
            Rodrigo Otto
****************************************************/

package source;

// importação da classes de camada visual GUI
import java.awt.*;
//import javax.swing.border.AbstractBorder;
import javax.swing.*;

import java.awt.Toolkit;  
import java.awt.event.MouseEvent;  
import java.awt.event.MouseListener; 

public class JogoMemoria {
	protected static void CentralizarObj(Component componente) {    
	      // Centraliza a janela de abertura no centro do desktop.    
	        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();    
	        Rectangle r      = componente.getBounds();    
	      // Dimensões da janela    
	        int widthSplash = r.width ;    
	        int heightSplash = r.height;    	  
	      // calculo para encontrar as cooredenadas X e Y para a centralização da janela.    
	        int posX = (screen.width / 2) - ( widthSplash / 2 );    
	        int posY = (screen.height / 2) - ( heightSplash / 2 );  
	  
	        componente.setBounds(posX,posY,widthSplash,heightSplash);   
	  }  	
	
	public static void main(String[] args) {
		// instanciando o frame
		JFrame FramePrincipal = new JFrame("Jogo da Memória");
		
		// definição do tamanho do frame
		FramePrincipal.setSize(700,700);
		// usado apenas qdo for do tipo GridLayout
		FramePrincipal.setLayout(new GridLayout(8,8));
		// centralizando frame		
		CentralizarObj(FramePrincipal);
		// declaracao de uma variavel usada dentro do for várias vezes
		JButton Botao;               
        // criação dos botoes dentro do frame
        for (int i = 1; i<= 64; i++){
        	// instanciando botao
        	Botao = new JButton("Botao "+i);
        	Botao.addMouseListener(new MouseListener() {  
        	  public void mouseClicked(MouseEvent e) {  
        	    // nop  
        	  }    	   
              public void mousePressed(MouseEvent e) {  
                // nop  
              }  
              public void mouseReleased(MouseEvent e) {  
                // nop  
              }  
              public void mouseEntered(MouseEvent e) {
            	 //Botao.setBorder(b);
            	 //Botao.setBorderPainted(true);  
        	  }  
   	          public void mouseExited(MouseEvent e) {  
   	        	 // Botao.setBorderPainted(false);  
              }  
        	});        	
        	
        	// informando um nome ao botao
        	Botao.setName("Botao"+i);
        	// inserindo no frame
        	FramePrincipal.add(Botao);	
        } // for				
		// alterando a cor de fundo do frame
		FramePrincipal.getContentPane().setBackground(Color.DARK_GRAY);
		// deixando o frame visivel ao usuário
		FramePrincipal.setVisible(true);
		// informando a ação que sai do sistema ao fechar o frame
		FramePrincipal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}		
	}

O botão (jbutton) tem alguma propriedade onde posso guarda um valor (numero ou string)?
como posso acessar cada botao dentro do JFrame?

tipo, eu vou varrer cada botao, e nessa propriedade, onde irei guardar um texto ou numero, irei montar os pares de cada item do jogo. o jogo nao haverá imagem, apenas textos, exemplo: botao 01 com botao 01, botao 02 com botao 02 e assim por diante.

so que o label do botao será ???, apos clicar irei mostrar o numero do botao pra que ele acheo seu par.

alguem tambem teria aguma dica pra me auxiliar no desenvolvimento? será muito bem vindo.obrigado a todos.

4 Respostas

Mrwin

pq vc não faz um método no onclick? label default do button é ??? no action onclick de cada botão vc diz q o label dele recebe botao xxx.

botao.actionPerformed(actionevent e){

botao.setlabel(botao xxx);

}

é isso?

M

Olá conterraneo, obrigado pela resposta. isso era um dos problemas, que eu nao iria ver agora, mas, ce ja matou uma das xaradas.

obrigado

M

Ola galera da terra. Sou iniciante em java. Gostaria de saber como fazer pra fechar uma janela (usando um JButton finalizar) sem matar o programa? Mas tem um porém, essa janela seria uma janela de cadastro. Sendo assim não adianta usar o setVisible(false). Seria só pra finalizar o cadastro e retornar pra janela principal.

Dah uma força aew, vlw.

rolemberg

de fato vc terá que implementar a classe ActionListener e tratar o evento do botão…Tipo vc deve esta esperando seguinte:

  • Quando clicar no primeiro botão, aguarde o usuário clicar em outro e compare os valores do botão correto…

-> acho que dá para fazer +/- assim:

//Classe interna

   class JogoHandler implements ActionListener{
       public void actionPerformed(ActionEvent evento) {
              Object clique = evento.getSource();

             //aqui vc terá que fazer mais um if para verificar se o valor foi clicado pela segunda vez ...
             if(clique==botao1){
                //quarde o valor em uma variavel
             }
        }
   }

para fechar a janela faça o seguinte metodo:

//esse metodo precisa esta dentro do frame para quando vc clicar no botão fechar, dar tudo certo...
//também vera em algumas literaturas que teria que implementar 7 metodos, mas esse já supre sua necessidade....

addWindowListener(new WindowsAdapter){
   public void WindowsClosing(Windows e){
   System.exit();
   }
}
Criado 30 de outubro de 2007
Ultima resposta 9 de fev. de 2008
Respostas 4
Participantes 4