Erro na Inicialização de Array

9 respostas
rock-skull

Olá. A minha pergunta é bem besta, mas não estou conseguindo achar a solução.

Eu recebo erro no seguinte código:

javax.swing.JLabel chaveA = new javax.swing.JLabel();
javax.swing.JLabel chaveB = new javax.swing.JLabel();
private javax.swing.JLabel[] chaves = {chaveA,chaveB};

Estou fazendo isso errado? Teria alguma API (Tipo ArrayList ou algo do gênero) que seria melhor usar ?

9 Respostas

romarcio
Tenta assim:
javax.swing.JLabel chaveA = new javax.swing.JLabel();
javax.swing.JLabel chaveB = new javax.swing.JLabel();
private javax.swing.JLabel[] chaves = new javax.swing.JLabel[] {chaveA,chaveB};
Mas poderia usar listas:
import java.util.*;
List<JLabel> chaves = new ArrayList<JLabel>();
luciano2

É estranho eu compilei o código aqui e não vi erro nenhum.
Onde você declarou esse código?

rock-skull

Estou usando no Netbeans, ele sublinha o código de vermelho (a parte de inicialização) gerando um erro.

romarcio

Copia o erro e cola aqui, também poste a classe que está gerando o erro, fica mais fácil identifica-lo.

rock-skull

A classe é meio grande, acho que fica inviável colar aqui. Mas basicamente, eu criei os JLabes pelo GUI Editor do Netbeans.

Aí coloquei o código que eu postei acima:

private JLabel[] lChaves = {chaveA, chaveB, chaveC, chaveD, chaveE, chaveF, chaveG, chaveH};

O Erro gerado é o seguinte:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - illegal forward reference at controlerhino.rhinoGui.<init>(rhinoGui.java:29) at controlerhino.Main$1.run(Main.java:11) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Para ficar mais claro. EU criei cada um desses JLabels com uma imagem (off.png). Eu faço uma leitura da porta serial, pra saber o estado dessas chaves (on/off). Isso me retorna uma array de boolean.

Pretendo num for, verificar o boolean e trocar a imagem de acordo com o estado: on.png- true / off.png - false.

J

Falae, aonde vc esta colocando o seu codigo?

pode ser esse private!!!

rock-skull
public class rhinoGui extends javax.swing.JFrame {
     private JLabel[] lChaves = {chaveA, chaveB, chaveC, chaveD, chaveE, chaveF, chaveG, chaveH};

public rhinoGui(conexaoSerial c) {
   //code
   init(); //Onde são inicializados todos os componentes GUI
}
}
J

Vamos lá!
me corrigam se eu estiver errado mas....

1. acredito que nao se pode ter variavel iniciada com numero (pode ?)

2. vc declarava e instanciava o array antes de iniciar/declarar os outros labels. pode colocar o array dps do init(), acredito que de certo tb

acredito que possa ser um desses dois motivos o erro.....

public class NewClass extends JFrame {
    JLabel chaveA = new JLabel();
    JLabel chaveB = new JLabel();
    JLabel chaveC = new JLabel();
    JLabel chaveD = new JLabel();
    JLabel chaveE = new JLabel();
    JLabel chaveF = new JLabel();
    JLabel chaveG = new JLabel();
    JLabel chaveH = new JLabel();
       
    
  JLabel Chaves[] = {chaveA, chaveB, chaveC, chaveD, chaveE, chaveF, chaveG, chaveH};  
  
public NewClass() {   
  
   //code   
  //Onde são inicializados todos os componentes GUI   
}  


}
rock-skull

É… era isso mesmo. Obrigado.

Criado 14 de outubro de 2010
Ultima resposta 14 de out. de 2010
Respostas 9
Participantes 4