Problema com classe principal

3 respostas
T

Olá!

Sou absolutamente iniciante e perdida em Java e não consigo resolver o problema aqui. Quando eu executo o código, dá um erro dizendo que não tem um método principal. Quando não, também não aparece nada. Eu sempre achei que isso não aconteceria a partir do momento em que se tem um public void main…
Enfim… segue o código.

import java.awt.*;
import javax.swing.*;

public class Main
{
    Pessoa m_objPessoa1;//Atributo HWS/membro da classe
    Pessoa m_objPessoa2;
    Pessoa m_objPessoa3;
    Pessoa m_objPessoa4;

    JButton botao;
    JButton botao_2;
    JButton botao_3;
    JButton botao_4;

    JLabel nome;
    JLabel idade;
    JLabel sexo;

    JTextField textNome;
    JTextField textIdade;
    JTextField textSexo;

    JPanel painel;

    JFrame frame;

    public void main(String[] args)
    {
        m_objPessoa1 = new Pessoa();  //inicialização do objeto
        m_objPessoa1.setNome("Juliana Cristina de Andrade"); //atrubui valor aos atributos da classe Pessoa
        m_objPessoa1.setIdade(17);
        m_objPessoa1.setSexo("Feminino");

        m_objPessoa2 = new Pessoa();
        m_objPessoa2.setNome("Eduardo Luiz de Andrade");
        m_objPessoa2.setIdade(39);
        m_objPessoa2.setSexo("Masculino");

        m_objPessoa3 = new Pessoa();
        m_objPessoa3.setNome("Fabiana Santos Araújo");
        m_objPessoa3.setIdade(29);
        m_objPessoa3.setSexo("Feminino");

        m_objPessoa4 = new Pessoa();
        m_objPessoa4.setNome("Jefferson Santos Arruda");
        m_objPessoa4.setIdade(15);
        m_objPessoa4.setSexo("Masculino");

        botao = new JButton("1");
        botao_2 = new JButton("2");
        botao_3 = new JButton("3");
        botao_4 = new JButton("4");

        nome = new JLabel("Nome");
        idade = new JLabel("Idade");
        sexo = new JLabel("Sexo");

        textNome = new JTextField(30);
        textIdade = new JTextField(2);
        textSexo = new JTextField(1);

        painel = new JPanel();
        painel.setLayout(new FlowLayout());
        painel.setBounds(0, 0, 800, 600);
        painel.setBackground(Color.GRAY);
        painel.add(nome);
        painel.add(textNome);
        painel.add(idade);
        painel.add(textIdade);
        painel.add(sexo);
        painel.add(textSexo);
        painel.add(botao);

        frame = new JFrame("Dados");
        frame.setLayout(new GridLayout(2, 1));
        frame.add(painel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

    }

}

Espero que consigam entender o problema e me ajudem.
Obrigada.

3 Respostas

B

A especificação inteira do método main é public static void main(String[] args)

T

Obrigada, mas quando digito “static” dá outro erro informando que as variáveis não podem ser referidas por static, ou coisa do tipo. Por isso retirei o static e esse erro não acontece mais, apenas o anterior.

B

Marcar variáveis como static significa que esta variável será compartilhada por todas as instancias/objetos daquela classe. Chamamos essas variáveis de variáveis ou atributos da classe.

A regra principal é a seguinte: Você não pode usar atributos de instancia(não static( a partir de métodos da classe(static), porem o contrario é possível, você pode chamar atributos da classse(static) de dentro de métodos da instancia(não static).

A solução para o seu problema:

public static void main(String[] args)
    {
       Main main = new Main(); // instanciamos a classe
       main.iniciar(); // chamamos o método da instancia
    }

    private void iniciar()
    {
        m_objPessoa1 = new Pessoa();  //inicialização do objeto
        m_objPessoa1.setNome("Juliana Cristina de Andrade"); //atrubui valor aos atributos da classe Pessoa
        m_objPessoa1.setIdade(17);
        m_objPessoa1.setSexo("Feminino");

        // E todo o resto aqui.
    }
}

Outra opção é tirar os atributos da classe e colocar a torna-los locais, com declaração deles dentro do método.

Criado 13 de março de 2009
Ultima resposta 13 de mar. de 2009
Respostas 3
Participantes 2