Bom, povo acontece o seguinte, criei um projeto no NetBeans e no Eclipse, adicionei importação do “javax.swing” e criei um JFrame e coloquei assim:
JFrame.setVisible(true);
e essas IDE’s simplesmente não executam isso… Deixo abaixo o código de um dos meus projetos:
import java.awt.*;
import javax.swing.*;
public class Background {
JFrame j = new JFrame();
Graphics g;
public void paint(){
j.add(null,g);
j.setVisible(true);
j.setSize(500, 500);
j.setResizable(false);
j.add(null,g);
g.setColor(Color.BLACK);
}
public static void main(String[] args){
new Background();
}
}
Você não chamou o método paint que faz a inicialização do JFrame.
Que mistureba. Normalmente você faria algo como:
package guj;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
public class BlackBackground extends JFrame {
/**
* Inicia a aplicacao
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
BlackBackground frame = new BlackBackground();
// Note que setVisible não deve ser chamado dentro do construtor do JFrame
// Deve ser chamado por quem cria o JFrame
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Construtor do JFrame
*/
public BlackBackground() {
setSize(500, 500);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setBackground(Color.BLACK);
}
}
Cuidado com o método “paint” - ele raramente precisa ser sobreescrito. Em um programa de iniciante, sobreescrever o método “paint” normalmente indica algum problema de conceito. E mesmo o “paintComponent” só deve ser sobreescrito se você souber o que está fazendo.
[quote=wagnerfrancisco]Você não chamou o método paint que faz a inicialização do JFrame.
[/quote]
Como eu poderia fazer para chamá-lo?
Não, deixe, já, fiz aqui… grato
E nesse código aqui?
import java.awt.*;
import javax.swing.*;
public class Backg {
JFrame j = new JFrame("Pac - Man");
Graphics2D g2d;
/**
*Inicializar...
*/
public Backg(){
j.add(null,g2d);
j.setResizable(false);
j.setVisible(true);
j.setSize(500, 500);
j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
g2d.setColor(Color.black);
}
public static void main(String[] args) {
}
}
Eu tô também com esse mesmo probleminha, aqui.
Guilherme-san, normalmente você nunca instancia um JFrame e sim uma classe derivada dele, como no exemplo que você tentou mostrar.
Siga o exemplo que eu dei (e que foi modificado de um gerado pelo plugin WindowBuilder do Eclipse). Não fique inventando coisas.
E a propósito, dificilmente você usará o objeto Graphics ou Graphics2D em uma aplicação Swing, a menos que você precise, por algum motivo, criar um componente que você mesmo tenha de desenhar alguma coisa. Para pintar o fundo de um JFrame de preto, você não faz isso (não funciona direito), e sim pega o Content Pane e seta o background (tal como eu fiz no exemplo).
Graphics2D é usada comument em Jogos ou Desenhos em geral, nao faca modificacoes no seu componente por isso, pois a manutencao futura ficara prejudicada;.