Erro de atribuição de valor a uma variável

6 respostas
J

Pessoal estou fazendo um exercicio da faculdade, que ao clicar em um botão a uma imagem irá rolar na tela (cair de cima para baixo), até tocar a borda de baixo… No entando, preciso atrivuir valor a uma variavel inteira, para que ela vá se incrementanto e entre num loop para ir modificando a posição da figura. Olhem para mim o código abaixo e tentem identificar o erro para mim por favor:

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
* @author volnei
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class Teste extends JFrame {
   public int linha = 75;
   public int coluna = 95;
   private javax.swing.JPanel jContentPane = null;
   private javax.swing.JButton jButton = null;
   private javax.swing.JLabel jLabel = null;
   public static void main(String[] args) {
      new Teste();
   }
   /**
    * This is the default constructor
    */
   public Teste() {
      super();
      initialize();
   }
   /**
    * This method initializes this
    * 
    * @return void
    */
   private void initialize() {
      this.setSize(300, 200);
      this.setContentPane(getJContentPane());
      this.setVisible(true);
   }
   /**
    * This method initializes jContentPane
    * 
    * @return javax.swing.JPanel
    */
   private javax.swing.JPanel getJContentPane() {
      if (jContentPane == null) {
         jContentPane = new javax.swing.JPanel();
         jContentPane.setLayout(null);
         jContentPane.add(getJButton(), null);
         jContentPane.add(getJLabel(), null);
      }
      return jContentPane;
   }
   /**
    * This method initializes jButton
    * 
    * @return javax.swing.JButton
    */
   private javax.swing.JButton getJButton() {
      if(jButton == null) {
         jButton = new javax.swing.JButton();
         jButton.setBounds(86, 17, 121, 35);
         jButton.setText("Mostrar");
         jButton.addActionListener(new java.awt.event.ActionListener() { 
            public void actionPerformed(java.awt.event.ActionEvent e) {    
               JLabel label = getJLabel();
               label.setIcon(new ImageIcon("c:\\imagem.gif")); 
               
               
               
               
            }
         });
      }
      return jButton;
   }

  
  private javax.swing.JLabel getJLabel() {
         while (linha < 200) {
      if(jLabel == null) {
         jLabel = new javax.swing.JLabel();
	 jLabel.setBounds(coluna, linha, 108, 32);
         jLabel.setText("");
	 
      }
      return jLabel;
      int linha = (linha.value) + 1 ; //Esssa atribuição está dando erro ao compilar.
      }
   }
   public void setJLabel(javax.swing.JLabel label) {
      jLabel = label;
   }

}

Já aproveitando a pergunta, num sei se esse tipo de código está certo, pois preciso de fazer um jogo de Tetris onde as peças vai caindo, mas o código acima é só o protótipo, então gostaria de saber se alguém saberia me responder como controlar o tempo para que aconteça o loop para atualização das peças e como se faz para que ao exibir a peça em uma nova posição a exibida anteriormente seja apagada…
Obrigado.

6 Respostas

T

Credo, porque você não usa:

linha = linha + 1;

ou para os mais preguiçosos

linha++;
J

Lhe confesso que tentei mas mesmo assim dá o erro:

C:\Arquivos de programas\jEdit> javac -classpath "$CLASSPATH;C:" -sourcepath "C:" -nowarn -encoding Cp1252 "C:\Teste.java"
C:\Teste.java:85: unreachable statement
      linha++;
      ^
C:\Teste.java:87: missing return statement
   }
   ^
2 errors
T

Inverta a ordem dos comandos.

linha = linha + 1 ; 
       return jLabel;

Coisas que você deve checar sempre em computação:

  • A ordem faz diferença;
  • Corrigir um erro pode exigir mudar algo que não está na mesma linha onde o compilador acusou erro.
J

Acredito que seja a ordem mesmo, porem agora ao ser compilado o código:

private javax.swing.JLabel getJLabel() {
       while (linha <200){
       if(jLabel == null) {
         jLabel = new javax.swing.JLabel();
	 jLabel.setBounds(coluna, linha, 108, 32);
         jLabel.setText("");
	 
      }
      linha = linha + 1; 
      return jLabel;
       }
   }

Acusou o seguinte erro:

C:\Arquivos de programas\jEdit> javac -classpath "$CLASSPATH;C:" -sourcepath "C:" -nowarn -encoding Cp1252 "C:\Teste.java"
C:\Teste.java:87: missing return statement
   }
   ^
1 error
J

esqueci de dizer, a linha 87 que está acusando o erro desta vez é o ultimo }

T

Você está usando o Eclipse?
Reformate o seu código (muito simples, marque seu programa inteiro com Ctrl+A e use Ctrl+Shift+F) - você vai ver que está sobrando um “}” - (ou faltando um “{”, sei lá - não vou ficar lendo seu programa inteirinho e tentar entender o que você quer fazer). Deixo isso para você ver.

Criado 4 de maio de 2006
Ultima resposta 4 de mai. de 2006
Respostas 6
Participantes 2