Boa noite pessoas…
Montei um exemplo rápido agora onde faço um desenho no frame e tento exportá-lo em alguns formatos…
porém eu obtenho um null pointer exception…
alguem sabe porq!?
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Exportar extends JFrame implements ActionListener {
private Container caixa;
private JButton bExportar;
private JButton bDesenhar;
public Exportar()
{
getContentPane().setBackground(Color.white);
caixa = getContentPane();
caixa.setLayout(null);
bExportar = new JButton("Exportar");
bDesenhar = new JButton("Desenhar");
caixa.add(bExportar);
caixa.add(bDesenhar);
bExportar.setBounds(30, 420, 100, 30);
bDesenhar.setBounds(140, 420, 100, 30);
bExportar.addActionListener(this);
bDesenhar.addActionListener(this);
setSize(500, 500);
setVisible(true);
}
public static void main(String args[])
{
Exportar obj = new Exportar();
obj.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == bExportar){
try{
BufferedImage bi = new BufferedImage(430, 450, BufferedImage.TYPE_INT_ARGB);
RenderedImage rendImage = bi;
ImageIO.write(rendImage, "PNG", new File("imagem.PNG"));
ImageIO.write(rendImage, "JPEG", new File("imagem.JPG"));
ImageIO.write(rendImage, "gif", new File("imagem.GIF"));
ImageIO.write(rendImage, "BMP", new File("imagem.BMP"));
}
catch(IOException f){
JOptionPane.showMessageDialog(null, f);
}
catch(Exception g){
JOptionPane.showMessageDialog(null, g);
}
}
if(e.getSource() == bDesenhar){
Graphics2D g = (Graphics2D) getGraphics();
Ellipse2D.Double myEllipse = new Ellipse2D.Double(100, 100, 200, 200);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setStroke(new BasicStroke(4));
g.setPaint(Color.white);
g.fill(myEllipse);
g.setPaint(Color.GRAY);
g.draw(myEllipse);
}
}
}