Galera, to tentando desenhar um componente na tela, mas está dando NullPointException (na primeira chamada do g, linha 8) e eu não sei porque! O código:
Oi,
você não esta instanciando a variavel…
eu gostei da ideia e fiz uma classe pequena pra teste…
de uma olhada, pode ajudar…
publicclassPainterextendsJFrame{//// Declara as variaveis necessarias.// publicVolatileImageteste;publicGraphics2Dgraphic;publicButtonteste_button,button;/** * Construtor da classe. */publicPainter(){//// Cria o titulo da janela.//setTitle("Painter");// Define a cor do fundo.setBackground(newColor(153,204,255));//// Define o tamanho da janela.//setSize(500,300);//// Adiciona o container junto com o Label.//getContentPane().add(newLabel("Segure o mouse e desenhe"),BorderLayout.SOUTH);//// Cria o evento do mouse.//addMouseMotionListener(newMouseMotionAdapter(){publicvoidmouseDragged(MouseEvente){graphic.drawOval(e.getX(),e.getY(),4,4);repaint();}});addMouseListener(newMouseAdapter(){publicvoidmouseClicked(MouseEvente){// Se clicado uma vez... cor padrão. if((e.getClickCount()==1)&&(e.getButton()==MouseEvent.BUTTON3)){graphic.setColor(Color.BLACK);}// Se clicado 2 vezes.. cor vermelha. elseif((e.getClickCount()==2)&&(e.getButton()==MouseEvent.BUTTON3)){graphic.setColor(Color.RED);}}});//// Abre a janela.//show();teste=createVolatileImage(500,500);graphic=teste.createGraphics();}/** * Método paint. */publicvoidpaint(Graphicsg){g.drawImage(teste,0,0,this);}/** * @param args */publicstaticvoidmain(String[]args){newPainter().setVisible(true);}}
Tchauzin!
dm_thiago
Eu pensava que no “Graphics g = super.getGraphics();” intanciaria ela.
Olhado esse seu exemplo me surgiu uma duvida:
Você desenhou em cima de um VolatileImage (nunca tinha ouvido falar disso antes), na minha classe eu tentava desenhar sobre um JPanel. Seria mais correto então usar o VolatileImage?
Outra coisa ainda, do jeito que você instanciou o graphic, não dá para fazer com o JPanel. Você saberia outro jeito?
Obrigado!
ps: toda duvida que eu posto aqui de interface, é sempre você que me ajuda… muito obrigado!
lina
Oi,
Eu usei ali o VolatileImage por ter uma aceleração a mais e tornar o desempenho mais rapido…
porem é uma imagem que pode perder seus conteúdos qualquer hora a devido a circunstâncias além do controle da aplicação (por exemplo, situações causadas pelo sistema operacional ou através de outras aplicações)…
estou em uma lan aqui hehehehehe, mas assim que possivel irei ver como fazer com um JPanel… eu lembro que eu fiz com JPanel e troquei pra Volatili por ele ser mais rapido rsrs…
ps: Vai ver porque suas duvidas são interessantes
Tchauzin!
dm_thiago
Esse VolatileImage me pareceu interessante… vou dar uma estudada e ver o que eu aprendo sobre. Vou ficar esperando uma resposta sua para o JPanel.
Obrigado de novo!
[]´s
dyorgio
cara…esta dando nullPointer porque vocês esta chamando esse seu método
antes da janela estar visivel…
quando isso ocorre a chamada a getGraphics() retorna null…
leia o doc do Java ¬¬
faça apenas um if verificando se é diferente de null
e viva feliz