Criando interface gráfica no JAVA erro no código

Estou iniciando na programação, não entendo quase nada ainda.
No momento estou testando a criação de interface gráfica, como podem ver pelo código, algo bem simples, entendo aos poucos os conceitos e etc.

Gostaria que pudessem me ajudar com o código a seguir.

package projetojava;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Meuframe extends JFrame {

public Meuframe() {
	
	super ("Meu Frame");
	
	JButton botao = new JButton("Clique");
	
	getContentPane().add(botao);		
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setSize(300,300);
	setVisible(true);
}

public static void main(String[] args) {
	new Meuframe();

}

}

Aponta um erro com o main, do “public static void”. Já pesquisei em outros tópicos e está escrito da mesma forma, então creio que seja outro erro.
Se puderem explicar o porque e não somente a solução, ficarei muito grato.

Faltou você dizer qual é o erro, não apenas que “aponta um erro com o main”, pois assim a gente tem que rodar o seu código pra saber o que é. Essa mensagem de erro já pode ajudar a dar uma resposta mais rápida.

Olhando por cima (sem rodar), seu código parece ok. Mas, se já está tropeçando nisso, tente algo mais simples:

import javax.swing.JFrame;

public class Meuframe extends JFrame {

	public Meuframe() {
		super();
		setTitle("Meu Frame");

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new Meuframe().setVisible(true);
	}
}

Abraço.

esse main não deveria estar dentro da classe MeuFrame?
Ao chamar o construtor acho que se confundiu com as chaves {}

Testei o código aqui e rodou. Qual erro você está tendo?

De qualquer forma, aqui está ele com alguns ajustes.

  1. Você não deve chamar setVisible no construtor
  2. Não é necessário usar o método getContentPane(), pode chamar add direto
  3. O primeiro JFrame deve ser aberto através da EventQueue. Nos demais, não precisa.
  4. Hoje as declarações de variáveis podem ser simplificadas com o comando var
package projetojava

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

public class Meuframe extends JFrame {
    public Meuframe() {
        super("Meu Frame");
		setSize(300, 300);
		
		var botao = new JButton("Clique");
        add(botao);
		
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
		EventQueue.invokeLater(() -> new Meuframe().setVisible(true));
    }
}

Pessoal, desculpe a demora. Trabalho com 2 outros negócios que nada tem a ver com programação, além de filho. kkk.
Mas vamos lá, primeiro muito obrigado pelo disponibilidade e paciência de vocês de rodar o código para ver o problema, segundo, eu fui rodar o código aqui pra copiar o erro e trazer para cá, mas funcionou. Não modifiquei nada, simplesmente funcionou. Depois de horas quebrando a cabeça.

Não sei se alguém sabe se o programa tem algum tipo de instabilidade ou bug, mas uso o IDE Eclipse.

O código estava realmente certo. Com certeza não é problema da linguagem ou da IDE (esses nunca dão problema por si só, então nem considere esse hipótese).

É mais provável que vc estivesse confundido alguma coisa. Por isso é importante, quando vc postar um tópico, não só dizer “aponta um erro”, mas postar exatamente a mensagem de erro que você está obtendo. Aí teríamos mais condições de entender a causa.

1 curtida