Minha Imagem "yellowBall" nao é desenhada na tela

21 respostas
SirDominque

Gente, quando eu faço isso aqui :

ImageIcon ii = new ImageIcon(this.getClass().getResource(“yellowBall.jpg”));

Em que pasta o netbeans ta buscando o arquivo ?

Detalhe:

Projeto chamado X :
Pacote chamado x :
dentro de x esta minha classe que contem o código : ImageIcon ii = new ImageIcon(this.getClass().getResource(“yellowBall.jpg”));

Resposta do netbeans:

<blockquote>Exception in thread “main” java.lang.NullPointerException

at javax.swing.ImageIcon.(ImageIcon.java:205)

at game.screen.setBall(screen.java:117)

at game.GAME.main(GAME.java:24)

</blockquote>

21 Respostas

SirDominque

Fiz Funcionar assim :

<blockquote>public void setBall()

{

ImageIcon ii = new ImageIcon(yellowBall);

Image i;

i = ii.getImage();
Graphics graphics = jPanel_Screen.getGraphics();
    graphics.drawImage(i,200,200,null);

}

Mas a imagem nao esta sendo desenhada na tela… O que esta faltando ?

SirDominque
Tentei assim também e não foi :
public void setBall()
{
 //ImageIcon ii = new ImageIcon(this.getClass().getResource("yellowBall"));
 ImageIcon ii = new ImageIcon("yellowBall");
 Image i;
 i = ii.getImage();
      
        Graphics graphics = jPanel_Screen.getGraphics();
        graphics.drawImage(i,200,200,null);
        jPanel_Screen.validate();
        jPanel_Screen.update(graphics);
        jPanel_Screen.paint(graphics);
        jPanel_Screen.paintAll(graphics);
        jPanel_Screen.updateUI();
        jPanel_Screen.validate();
}

Não é gerado nenhum erro.

ViniGodoy

Se o pacote onde a imagem está chama:
br.com.game

Então você deve acessar com:

E você deve respeitar maiúsculas/minúsculas.

SirDominque

Oi Viny. Tentei de novo, mas ainda nao foi. Agora ele gerou um erro. Antes nao gerava. Não sei porque.

Segue Screenshot:
http://imageshack.us/photo/my-images/694/ajudajava.jpg/

Valeu por responder.

ViniGodoy

Faltou colocar a / antes da palavra game:

ViniGodoy

Aproveitando… o uso do Graphics está completamente errado no seu código.
Por acaso já leu os tutoriais de Java2D do Ponto V?

SirDominque

ViniGodoy:
Aproveitando… o uso do Graphics está completamente errado no seu código.
Por acaso já leu os tutoriais de Java2D do Ponto V?

Começando agora. http://www.pontov.com.br/site/java/48-java2d/93-uma-visao-rapida-sobre-o-java-2d

Se tiver alguma dúvida eu posto de novo :smiley: valeu :smiley:

SirDominque

Na verdade, eu ainda tenho uma dúvida. Viny, voce acha que devo apenas seguir o pontoV ou seguir tambem algum livro da oracle ou algo parecido ?

ViniGodoy

Se for para fazer jogo, o Ponto V é uma boa.

Dá uma olhada também no artigo “conhecendo o JFrame”, na sessão de Java Básico. Ele explica como o ciclo de pintura funciona.

SirDominque

Ajuda!, não estou conseguindo mostrar a linha.

A linha não aparece no JFrame

Estou estudando :
http://www.pontov.com.br/site/java/48-java2d/97-pintando-no-java-2d

ViniGodoy

Você leu esse artigo?
http://www.pontov.com.br/site/java/48-java2d/93-uma-visao-rapida-sobre-o-java-2d

Aqui explica que você deve sobrescrever o método Paint do JFrame para realizar a pintura.
E o método paint é que te fornece o Graphics.

Não adianta criar uma função do jeito que vc fez.

SirDominque
public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D) g.create();
        //Graphics g = super.getGraphics();
        
        Line2D linha = new Line2D.Double(10,10,300,300);
        
        g2d.draw(linha);
        //g2d.drawLine(1,1,100,100);
    }

Assim ?
Mas como faço pra chamar esse método com esse parametro agora?

ViniGodoy

O frame chama esse método automaticamente, sempre que é repintado.

SirDominque

haha funcionou. Mas é chato eu não poder ter controle no método >.<

Valeu Viny. Vou tentar fazer outros desenhos agora.

ViniGodoy

Vai lendo os artigos. Logo eu explico sobre game loop e escrita direta.

SirDominque

Ponto de Controle da linha quadrática , nada mais é do que o Xv e Yv né ? :D

Não cosngui fazer nada muito óóóóóóó igual no site , mas ... segue o código :
public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D) g.create();
     
        
        Line2D linha = new Line2D.Double(10,10,300,300);
        QuadCurve2D q = new QuadCurve2D.Double(100,100,200,300,300,100);
        CubicCurve2D c = new CubicCurve2D.Double();
        c.setCurve(100,100,250,350,310,110,400, 200);
        
        g2d.draw(linha);
        g2d.draw(q);
        g2d.draw(c);
     
    }
Agora com formas geométricas.. Dei risada do modo Arc2D.PIE haha:
public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D) g.create();
      
        
        //Linhas e Curvas
        Line2D linha = new Line2D.Double(10,10,300,300);
        QuadCurve2D q = new QuadCurve2D.Double(100,100,200,300,300,100);
        CubicCurve2D c = new CubicCurve2D.Double();
        c.setCurve(100,100,250,350,310,110,400, 200);
        
        //Formas geométricas
        g2d.draw(new Rectangle2D.Double(200,200,250,100));
        g2d.draw(new RoundRectangle2D.Double(300,320,150,50,10, 10));
        g2d.draw(new Ellipse2D.Double(400,400,75,90));
        g2d.draw(new Arc2D.Double(30,300,100,75,90,135,Arc2D.PIE));
        
        
        
        g2d.draw(linha);
        g2d.draw(q);
        g2d.draw(c);
        
    }
SirDominque

Esse GeneralPath…
http://www.pontov.com.br/site/java/48-java2d/97-pintando-no-java-2d

Se eu for desenhar uma linha do Ponto zero até o Ponto fim, quando eu começar a desenhar a segunda linha, ele vai começar automaticamente do Ponto fim ?

Não saquei muito bem a idéia.

ViniGodoy

Sim. É como vc imaginar que está dando comandos a um lápis.
O único comando que faz o lápis se deslocar sem desenhar nada é o moveTo.

O próprio artigo é uma implementação do exercício, e usa GeneralPath. Estude-o.

SirDominque

ViniGodoy:
Sim. É como vc imaginar que está dando comandos a um lápis.
O único comando que faz o lápis se deslocar sem desenhar nada é o moveTo.

O próprio artigo é uma implementação do exercício, e usa GeneralPath. Estude-o.

Agora entendi. Vou tentar desenhar alguma coisa.

SirDominque

Não consegui fazer nada muito óóo, mas ta aqui :

public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D) g.create();
      
        
        //Linhas e Curvas
        Line2D linha = new Line2D.Double(10,10,300,300);
        QuadCurve2D q = new QuadCurve2D.Double(100,100,200,300,300,100);
        CubicCurve2D c = new CubicCurve2D.Double();
        c.setCurve(100,100,250,350,310,110,400, 200);
        
        //Formas geométricas
        g2d.draw(new Rectangle2D.Double(200,200,250,100));
        g2d.draw(new RoundRectangle2D.Double(300,320,150,50,10, 10));
        g2d.draw(new Ellipse2D.Double(400,400,75,90));
        g2d.draw(new Arc2D.Double(30,300,100,75,90,135,Arc2D.PIE));
        
        
        //Formas Arbitrárias
        GeneralPath polygon = new GeneralPath();
        polygon.moveTo(50,50);
        polygon.lineTo(100,100);
        polygon.lineTo(100,200);
        polygon.lineTo(200,300);
        polygon.lineTo(300,410);
        
        g2d.draw(polygon);
        g2d.draw(linha);
        g2d.draw(q);
        g2d.draw(c);
        
    }

Não consegui usar o quadTo. O desenho nao apareceu...

SirDominque
Bom, acabei aquela página.E o do pacMan tambem.
public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D) g.create();
      
        
        //Linhas e Curvas
        Line2D linha = new Line2D.Double(10,10,300,300);
        QuadCurve2D q = new QuadCurve2D.Double(100,100,200,300,300,100);
        CubicCurve2D c = new CubicCurve2D.Double();
        c.setCurve(100,100,250,350,310,110,400, 200);
        
        //Formas geométricas
        g2d.draw(new Rectangle2D.Double(200,200,250,100));
        g2d.draw(new RoundRectangle2D.Double(300,320,150,50,10, 10));
        g2d.draw(new Ellipse2D.Double(400,400,75,90));
        g2d.draw(new Arc2D.Double(30,300,100,75,90,135,Arc2D.PIE));
        
        
        //Formas Arbitrárias
        GeneralPath polygon = new GeneralPath();
        polygon.moveTo(50,50);
        polygon.lineTo(100,100);
        polygon.lineTo(100,200);
        polygon.lineTo(200,300);
        polygon.lineTo(300,410);
        polygon.closePath();
            
            GeneralPath poly = new GeneralPath();
            poly.moveTo(50,50);
            poly.lineTo(50,50);
            poly.lineTo(50,100);
            poly.lineTo(100,100);
            poly.closePath();
        
        
        //Preenchimento (Fill)
        g2d.setColor(Color.MAGENTA.brighter());
        g2d.fill(polygon);
        g2d.setColor(Color.orange);
        g2d.fill(linha);
        //Gradient Fill
        GradientPaint redtowhite = new GradientPaint(0,0,Color.WHITE,100, 0,Color.BLUE);
        g2d.setPaint(redtowhite);
        g2d.fill(poly);
        
        //Drawning
        g2d.draw(polygon);
        g2d.draw(linha);
        g2d.draw(q);
        g2d.draw(c);
        
    }
Criado 9 de julho de 2012
Ultima resposta 10 de jul. de 2012
Respostas 21
Participantes 2