Galera estou montando um jogo o Genius, tá funcionando 100% unico problema é que não consigo simular a sequencia de cliques o sistema cria, já na hora de responder os cliques funcionam normalmente pois eu fiz a troca de imagens para dar o efeito de clique dentro dos metodos mousepressed e mouserelease, assim enquanto o mouse estiver apertado a imagem meio trasparente é exibida e quando é liberado a imagem normal volta.
Agora na hora de mostrar o que o sistema quer que está o problema, não consigo mudar, creio que o segredo está no repaint do jframe.
Alguem poderia me ajudar.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* Principal.java
*
* Created on 15/05/2010, 21:20:59
*/
package Tela;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
/**
*
* @author Shakall
*/
public class Principal extends javax.swing.JFrame {
/** Creates new form Principal */
List<Integer> lista = new ArrayList<Integer>();
int cont = 0;
private static final int VERDE = 1;
private static final int VERMELHO = 0;
private static final int AMARELO = 2;
private static final int AZUL = 3;
int TOTAL = 0;
thread t;
public Principal() {
initComponents();
Verde.setVisible(true);
VerdeS.setVisible(false);
Amarelo.setVisible(true);
AmareloS.setVisible(false);
Vermelho.setVisible(true);
VermelhoS.setVisible(false);
Azul.setVisible(true);
AzulS.setVisible(false);
lTotal.setText(TOTAL + "");
t = new thread(this);
t.start();
}
/** 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
VerdeS = new javax.swing.JLabel();
VermelhoS = new javax.swing.JLabel();
AmareloS = new javax.swing.JLabel();
AzulS = new javax.swing.JLabel();
Amarelo = new javax.swing.JLabel();
Vermelho = new javax.swing.JLabel();
Azul = new javax.swing.JLabel();
Verde = new javax.swing.JLabel();
lTotal = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
Fundo = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(589, 493));
getContentPane().setLayout(null);
VerdeS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/verdeS.png"))); // NOI18N
getContentPane().add(VerdeS);
VerdeS.setBounds(290, 50, 220, 120);
VermelhoS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/vermelhoS.png"))); // NOI18N
getContentPane().add(VermelhoS);
VermelhoS.setBounds(100, 50, 180, 120);
AmareloS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/amareloS.png"))); // NOI18N
getContentPane().add(AmareloS);
AmareloS.setBounds(300, 170, 220, 180);
AzulS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/azulS.png"))); // NOI18N
getContentPane().add(AzulS);
AzulS.setBounds(70, 180, 210, 170);
Amarelo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/amarelo.png"))); // NOI18N
Amarelo.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
AmareloMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
AmareloMouseReleased(evt);
}
});
getContentPane().add(Amarelo);
Amarelo.setBounds(300, 170, 220, 180);
Vermelho.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/vermelho.png"))); // NOI18N
Vermelho.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
VermelhoMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
VermelhoMouseReleased(evt);
}
});
getContentPane().add(Vermelho);
Vermelho.setBounds(100, 50, 180, 120);
Azul.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/azul.png"))); // NOI18N
Azul.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
AzulMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
AzulMouseReleased(evt);
}
});
getContentPane().add(Azul);
Azul.setBounds(70, 180, 210, 170);
Verde.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/verde.png"))); // NOI18N
Verde.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
VerdeMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
VerdeMouseReleased(evt);
}
});
getContentPane().add(Verde);
Verde.setBounds(290, 50, 220, 120);
lTotal.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
lTotal.setForeground(new java.awt.Color(255, 255, 255));
lTotal.setMaximumSize(new java.awt.Dimension(48, 17));
lTotal.setMinimumSize(new java.awt.Dimension(48, 17));
lTotal.setPreferredSize(new java.awt.Dimension(48, 17));
lTotal.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
lTotalMouseClicked(evt);
}
});
getContentPane().add(lTotal);
lTotal.setBounds(440, 20, 50, 17);
jLabel2.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel2.setForeground(new java.awt.Color(255, 255, 255));
jLabel2.setText("INICIAR");
jLabel2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel2MouseClicked(evt);
}
});
getContentPane().add(jLabel2);
jLabel2.setBounds(20, 20, 60, 17);
jLabel3.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel3.setForeground(new java.awt.Color(255, 255, 255));
jLabel3.setText("TOTAL:");
jLabel3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel3MouseClicked(evt);
}
});
getContentPane().add(jLabel3);
jLabel3.setBounds(390, 20, 50, 17);
jLabel4.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
jLabel4.setForeground(new java.awt.Color(255, 255, 255));
jLabel4.setText("SAIR");
jLabel4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel4MouseClicked(evt);
}
});
getContentPane().add(jLabel4);
jLabel4.setBounds(20, 50, 40, 17);
Fundo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagem/fundo.png"))); // NOI18N
getContentPane().add(Fundo);
Fundo.setBounds(0, 0, 590, 490);
pack();
}// </editor-fold>
private void lTotalMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
private void jLabel2MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
inicialiar();
}
private void inicialiar() {
TOTAL = 0;
cont = 0;
lTotal.setText(TOTAL + "");
adicionaBotao();
}
private void jLabel3MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
private void VerdeMousePressed(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
VerdeS.setVisible(true);
}
private void VerdeMouseReleased(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
VerdeS.setVisible(false);
if (!verifica(VERDE)) {
erro();
}
}
private void AmareloMousePressed(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
AmareloS.setVisible(true);
}
private void AmareloMouseReleased(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
AmareloS.setVisible(false);
if (!verifica(AMARELO)) {
erro();
}
}
private void AzulMousePressed(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
AzulS.setVisible(true);
}
private void AzulMouseReleased(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
AzulS.setVisible(false);
if (!verifica(AZUL)) {
erro();
}
}
private void VermelhoMousePressed(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
VermelhoS.setVisible(true);
}
private void VermelhoMouseReleased(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
VermelhoS.setVisible(false);
if (!verifica(VERMELHO)) {
erro();
}
}
private void jLabel4MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
System.exit(0);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Principal().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel Amarelo;
private static javax.swing.JLabel AmareloS;
private javax.swing.JLabel Azul;
private static javax.swing.JLabel AzulS;
private javax.swing.JLabel Fundo;
private javax.swing.JLabel Verde;
private static javax.swing.JLabel VerdeS;
private javax.swing.JLabel Vermelho;
private static javax.swing.JLabel VermelhoS;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel lTotal;
// End of variables declaration
private int sorteiaBotao() {
return (int) (Math.random() * 4);
}
private boolean verifica(int botao) {
if (lista.size() > 0) {
if (lista.get(cont) == botao) {
TOTAL += 10;
lTotal.setText(TOTAL + "");
cont++;
System.out.println();
if (lista.size() <= cont) {
adicionaBotao();
cont = 0;
}
return true;
}
cont = 0;
}
return false;
}
private void erro() {
if (lista.size() > 0) {
if (JOptionPane.showConfirmDialog(this, "Você errou tentar novamente?", "", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
TOTAL = 0;
lTotal.setText(TOTAL + "");
cont = 0;
lista = new ArrayList<Integer>();
lista.add(sorteiaBotao());
t.anima(lista);
}
}
}
private void adicionaBotao() {
lista.add(sorteiaBotao());
t.anima(lista);
}
private class thread extends Thread {
Principal pai;
int tempo = 800;
public thread(Principal pai) {
this.pai = pai;
}
public void anima(List<Integer> lista) {
try {
Iterator<Integer> list = lista.iterator();
while (list.hasNext()) {
anima(list.next().intValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void anima(int botao) throws InterruptedException {
switch (botao) {
case VERMELHO:
System.out.println("vermelho");
VermelhoS.setVisible(true);
thread.sleep(tempo);
VermelhoS.setVisible(false);
break;
case VERDE:
System.out.println("verde");
VerdeS.setVisible(true);
thread.sleep(tempo);
VerdeS.setVisible(false);
break;
case AMARELO:
System.out.println("amarelo");
AmareloS.setVisible(true);
thread.sleep(tempo);
AmareloS.setVisible(false);
break;
case AZUL:
System.out.println("azul");
AzulS.setVisible(true);
thread.sleep(tempo);
AzulS.setVisible(false);
break;
}
}
}
}