Boa noite!
Quero criar um programa que lê um campo de texto e, a partir deste texto digitado (deve ser um número inteiro representando a ID de um produto), mostre o nome do produto em questão em um JLabel.
Tenho as classes Main, Janela e Produto.
A minha ideia foi a seguinte:
Vejam a Classe Main:
public class Artesanato {
public static Integer totalProdutos = 999;
public static Produto produto[] = new Produto[totalProdutos];
public static void main(String[] args) {
// Cria a janela principal (o JFrame)
Janela janela = new Janela();
// Cria todos os produtos.Sendo que K será por definição o ID do produto (observar o parametro int no construtor).
for (int k = 0 ; k < totalProdutos ; k++) {
produto[k] = new Produto(k);
}
// Altera o Nome do produto "0" para testarmos posteriormente:
produto[0].setNome("Boneco Nathan Drake feito em biscuit");
}
}
Muito bem. Agora temos a classe Produto:
public class Produto {
private Double valorUnitario;
private Integer id = 0;
private String nome;
public Produto(int idRecebido) {
this.valorUnitario = 0.00;
this.id = idRecebido;
this.nome = "";
}
public String getNome() {
return this.nome;
}
public void setNome(String nomeRecebido) {
this.nome = nomeRecebido;
}
}
Até agora quase tudo bem. Vamos ao problema! A classe Janela, na qual estão o Campo de Texto que receberá o id (digitado) e o JLabel que mostrará o nome do produto conforme o id.
Vamos, então para a classe Janela:
public class Janela extends javax.swing.JFrame {
public Janela() {
try {
initComponents();
} catch (Exception e) {
System.err.println("Houve um erro.");
}
this.setVisible(true);
this.setResizable(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
// Codigo gerado pela IDE
@SuppressWarnings("unchecked")
private void txtIdProdutoKeyReleased(java.awt.event.KeyEvent evt) {
// Altera o JLABEL desejado para o nome do produto conforme ID digitado:
// ATENÇÃO: o JLabel a receber o nome é o seguinte: "lblDetalhesNome"
// ATENÇÃO: o JTextField onde se digita o ID é o seguinte: "txtIdProduto"
Integer indice = 0;
indice = Integer.parseInt(txtIdProduto.getText());
lblDetalhesNome.setText(produto[ indice ].getNome());
}
// -------------------------------------------------------------------------
}
O array produto no trecho do código: “lblDetalhesNome.setText(produto[ indice ].getNome());” em tese não consegue ser acessado. E o NetBeans diz “cannot find symbol”.
A partir daí vem as minhas dúvidas:
- Como consigo acessar o vetor produto[] criado na classe (ou através da classe) Main?
- Ao invés de tentar acessar diretamente produto[], eu deveria enviar produto como parâmetro para Janela? E aí, consequentemente deveria criar um vetor “temporário” para receber e trabalhar dentro da classe Janela?
Não consigo encontrar uma solução. Me ajudem, por favor!
Sinto que a solução é simples e que talvez esteja no entendimento de como o Java trabalha ou então como se trabalha com Java. 
Obrigado.