Mostrar o nome do Produto através do ID digitado

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:

  1. Como consigo acessar o vetor produto[] criado na classe (ou através da classe) Main?
  2. 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! :smiley: 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. :smiley:
Obrigado.

Pessoal, eu importei: import static artesanato.Artesanato.produto; e deu certo. Consegui acessar diretamente o array produto. Gostaria de saber se essa é uma boa prática.