Duvida em trocar imagem no label de um Jframe

0 respostas
S

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;
            }

        }
    }
}
Criado 16 de maio de 2010
Respostas 0
Participantes 1