Método não estático não pode ser referenciado a partir de um erro java de contexto estático

Srs, bom dia,

Minha aplicação esta dando o seguinte erro ; 

“Método não estático não pode ser referenciado a partir de um erro java de contexto estático”.

Mesmo eu lendo alguns artigos na internet sobre este tópico, não consegui entender o que siguinifica metodo não static e como aplica-lo, por isso venho pedir a ajuda de vcs.

Tenho uma aplicação na qual tenho uma Barra de Menu, quando seleciono um sub menu e vou para uma determinada página, coloco a Barra de Menu desabilitada os seus itens, para que o usuario não selecione outro sub menu sem antes fechar o que abriu e não ficar uma tela em cima da outra, isto esta funcionando bem, mas ao sair da tela que selecionei e voltar para a Barra de Menu e ao habilita-la novamente, estou tendo esse erro, poderiam me ajudar a corrigir ? Obrigado.

Código para desabilitar a Barra de Menu

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
// Botão visualizar notas no teclado
FrmVisNotas Visnotas = new FrmVisNotas();
jMenu2.setEnabled(false);
jMenu3.setEnabled(false);
jMenu4.setEnabled(false);
Visnotas.setVisible(true);
jDesktopPane1.add(Visnotas);
}

Quando saio da página FrmVisNota, clicando no botão “SAIR” faço este código

private void BtnsairActionPerformed(java.awt.event.ActionEvent evt) {
// Botão sair e voltar para o Menu Principal
FrmMenu.jMenu2.setEnabled(true);
FrmMenu.jMenu3.setEnabled(true);
FrmMenu.jMenu4.setEnabled(true);
this.dispose();
}

É ai que aparece o erro de " Método não estático não pode ser referenciado "

Sei que não posso referenciar um código da página que estou, como posso fazer isso entao ? Teria que colocar o FrmMenu como static ou o JMenu2,3,4 ??? Como faço isso ?

Obrigado.

O que acontece é que você tem algum método que pertence ao objeto (não estático) e está tentando invocar o mesmo de um método que pertence à classe (estático).
Algo como

public class Foo {
    public void boo(){}
 
    public static void main(String args[]) {
        boo(); //método estático não pode ser referenciado...
    }
}

Você precisa:
a) transformar o método em static

public static boo(){}

b) instanciar um objeto do tipo da classe referenciada e invocar o método a partir desse objeto

public static void main(String args[]) {
    Foo foo = new Foo();
    foo.boo(); //roda normal

}

Darlan, muito obrigado pela ajuda, mas não consegui fazer na pratica, deu ruim, entendi a teoria, mas não sei fazer funcionar.

Sera que se eu mandar uma parte do codigo da pagina FrmMenu (menu Principal) e da página que seleciono no menu, FrmVisNota (visualizar Notas) vc pode me mostrar melhor como eu consigo da página FrmVisNota ao clicar no botão Sair, habilitar a barra de Menu da página FrmMenu ? bom vou tentar, ae vai …

TELA MENU FrmMenu

package Formularios;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.swing.Timer;

public class  FrmMenu extends javax.swing.JFrame {

    public FrmMenu() {
        initComponents();
    }
    private void jMenu3MouseClicked(java.awt.event.MouseEvent evt) {                                    
        // Botão sair
        dispose();
    }                                   

    private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
        // Fui na tela Menu, botão direito em evento/windows/windows opened
        //Data :
          Date datasistema=new Date();
          SimpleDateFormat formato = new SimpleDateFormat ("dd/MM/yyyy");
          LblData.setText(formato.format(datasistema));
          
        //Hora
          Timer timer = new Timer(1000, new hora());
          timer.start();
     
    }                                 

    private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
    }                                          

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // Botão visualizar notas no teclado
       FrmVisNotas Visnotas = new FrmVisNotas();
       jMenu2.setEnabled(false);
       jMenu3.setEnabled(false);
       jMenu4.setEnabled(false);
       
       //jMenuItem6.setEnabled(false);
        Visnotas.setVisible(true);
        jDesktopPane1.add(Visnotas);
    }       
                    continua .......

TELA VISUALIZAR NOTAS - FrmVisnotas

package Formularios;

import java.awt.Image;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.table.DefaultTableModel;

public class FrmVisNotas extends javax.swing.JInternalFrame {
  final String caminho = "C://MUSIC PLAY//NotasTeclado//";
    FileInputStream entrada;
    FileOutputStream saida;
    File arquivo;
    JFileChooser seleccionado = new JFileChooser();
    File arq;
    byte[] bytesImg;
            
      public FrmVisNotas() {
         initComponents();
         
         try (Stream<Path> walk = Files.walk(Paths.get(caminho))) {
            List<String> result = walk.filter(Files::isRegularFile)
           .map(x -> x.getFileName().toString()).collect(Collectors.toList());
           Object[][] dados = new Object[result.size()][1];

            for (int i = 0; i < result.size(); i++) {
                dados[i] = new Object[]{result.get(i).split("\\.")[0]};
            }

            DefaultTableModel table = new DefaultTableModel(dados, new String[]{"Notas"});
            tblnotas.setModel(table);

        } catch (IOException e) {
            System.out.printf("Erro: %s", e.getMessage());
        }
      }

public String GuardarATexto(File arquivo, String contenido) {
        String resposta = null;
        try {
            saida = new FileOutputStream(arquivo);
            byte[] bytesTxt = contenido.getBytes();
            saida.write(bytesTxt);
            resposta = "Arquivo gravado !";
        } catch (Exception e) {

        }

        return resposta;
    }
    
    
    private void BtnsairActionPerformed(java.awt.event.ActionEvent evt) {                                        
      // "Botão sair dapágina visualizar nota e ir para página Menu"
      //FrmMenu.jMenu2.setEnabled(true);         Aqui é onde esta dando o erro !
      //jMenu3.setEnabled(true);
      //jMenu4.setEnabled(true);
        this.dispose();
    }                                       

    private void tblnotasMouseClicked(java.awt.event.MouseEvent evt) {                                      
        // Cliquei na tabela       
        int linha = tblnotas.getSelectedRow();
        txtpnota.setText(tblnotas.getValueAt(linha, 0).toString());
        ImageIcon imageIcon = new ImageIcon(new ImageIcon("C://MUSIC PLAY//NotasTeclado//"+txtpnota.getText()+ ".jpg").getImage().getScaledInstance(599,243,Image.SCALE_DEFAULT)); 
        lblfoto.setIcon(imageIcon);
 
    }                                     
                   continua ...

obrigado.

Me mostra a linha onde ocorre o erro.

Darlan. bom da. no codigo que mandei para vc FrmVisNota, eu coloquei o local onde esta dando o erro, abaixo colocarei este código e uma obs, se vc precisar do codigo mais completo, favor verificar mensagem anterior.

private void BtnsairActionPerformed(java.awt.event.ActionEvent evt) {
// “Botão sair da página visualizar nota e ir para página Menu”
//FrmMenu.jMenu2.setEnabled(true); OBS : LINHA ONDE ACONTECE O ERRO !
//jMenu3.setEnabled(true);
//jMenu4.setEnabled(true);
this.dispose();

Muito obrigado pela sua atenção e ajuda, fique com Deus.

Armando