Não roda o codigo me ajudem por favor

Bom dia estou com um problema, pq não consigo fazer esse codigo rodar simplesmente quero que ele puxe uma imagem que está na pasta do programa para ser o fundo mas não quero que seja por Label pq vai ser responsiva conforme a tela do usuario, então iz dessa maeneira parece estar tudo certo s´não roda alguem pode encontra o erro já estou a 4 dias e não acho o problema.

codigo:
package GUI;

import java.awt.GridLayout;
import javax.swing.JFrame;
import utilitarios.FundoTela;

public class Principal extends javax.swing.JFrame {

FundoTela tela;

public Principal() {
    initComponents();
    setExtendedState(JFrame.MAXIMIZED_BOTH);
    
    setLayout(new GridLayout());
    tela = new FundoTela ("imagens/imagem_fundo.Jpg");
    getContentPane().add(tela);
    
}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jMenuBar1 = new javax.swing.JMenuBar();
    jMenu1 = new javax.swing.JMenu();
    jMenuItem1 = new javax.swing.JMenuItem();
    jMenuItem2 = new javax.swing.JMenuItem();
    jMenuItem3 = new javax.swing.JMenuItem();
    jMenuItem4 = new javax.swing.JMenuItem();
    jMenu2 = new javax.swing.JMenu();
    jMenuItem5 = new javax.swing.JMenuItem();
    jMenu3 = new javax.swing.JMenu();
    jMenu4 = new javax.swing.JMenu();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Pizzaria Jede");

    jMenu1.setText("Cadastro");

    jMenuItem1.setText("Clientes");
    jMenu1.add(jMenuItem1);

    jMenuItem2.setText("Funcionario");
    jMenu1.add(jMenuItem2);

    jMenuItem3.setText("Cardapio");
    jMenu1.add(jMenuItem3);

    jMenuItem4.setText("Entregador");
    jMenu1.add(jMenuItem4);

    jMenuBar1.add(jMenu1);

    jMenu2.setText("Caixa");

    jMenuItem5.setText("Pedido");
    jMenu2.add(jMenuItem5);

    jMenuBar1.add(jMenu2);

    jMenu3.setText("Relatório");
    jMenuBar1.add(jMenu3);

    jMenu4.setText("Sair");
    jMenuBar1.add(jMenu4);

    setJMenuBar(jMenuBar1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 400, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 279, Short.MAX_VALUE)
    );

    pack();
}// </editor-fold>                        

/**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
      
        public void run() {
            new Principal().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu3;
private javax.swing.JMenu jMenu4;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JMenuItem jMenuItem5;

e esse é o codigo do utlitario que criei:
package utilitarios;

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;

public class FundoTela extends JDesktopPane {
private Image imagem;

public FundoTela(String image){
    this.imagem = new ImageIcon(imagem).getImage();
        }

@Override
  public void paintComponent(Graphics g){
      g.drawImage (imagem, 0, 0, getWidth(), getHeight(), this  );
      
  }

}
se puderem me ajudar eu agradeço.

Você está tentando rodar a classe Principal?
Ela não tem o método estático main(String[]), aí não vai rodar mesmo.

Tem um main lá

1 curtida

Podia especificar melhor oq seria este não roda? dá erro?

estou usando o Netbeans, fui ver se era a IDE fiz um outro programa simples e ele rodou de boa mas esse não. Ai quando eu mando executar da isso e não abre:

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at javax.swing.ImageIcon.(ImageIcon.java:240)
at utilitarios.FundoTela.(FundoTela.java:21)
at GUI.Principal.(Principal.java:25)
at GUI.Principal$1.run(Principal.java:129)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

olha só se olhar ali vai ver que tem uma classe assim:
public static void main(String args[]), fora isso o que poderia ser?

Desculpe, me passou despercebido o método main, eu devo ter rolado rápido demais e não vi.

Ele não encontrou sua imagem.

Cara, não usa ImageIcon só para obter objetos Image.
Faça assim:

public FundoTela(String image){
    InputStream input = getClass().getResourceAsStream(image);
    this.imagem = ImageIO.read(input);
}

E onde tu cria o FundoTela, passa o caminho começando com "/", pra procurar a partir da raíz do classpath da sua aplicação.
Assim:

tela = new FundoTela("/imagens/imagem_fundo.Jpg");

Muito Obrigado funcionou vlw!!!