Enregistrer l'image à partir d'un Composite après le tirage

Je suis débutant en java, mon premier projet est d'attirer, et enregistrer une image à partir d'un Composite, mon tirage est fait, mais je ne peux pas l'enregistrer après je dessine dans un Composite :(, Donc pouvez-vous m'aider à le résoudre
quand j'ouvre l'image après le tirage, Il ne contient rien 🙁
voici mes codes:

package image;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class paint extends JFrame{
private Point points[] = new Point[10000];
private Point pointends[] = new Point[10000];
private int pointCount = 0;
private JButton save_btn;
public paint()
{
panel paint2 = new panel();
add(paint2,BorderLayout.CENTER);
}
private class panel extends JPanel
{   
private paint my_paint;
public panel()
{   
setBackground(Color.WHITE);
save_btn = new JButton();
save_btn.setText("123");
this.add(save_btn);
ButtonHandler handler1 = new ButtonHandler();
save_btn.addActionListener(handler1);
MouseHandler handler = new MouseHandler();
this.addMouseMotionListener(handler);
this.addMouseListener(handler);
}
private class ButtonHandler implements ActionListener
{
@Override
public void actionPerformed(ActionEvent arg0) {
//TODO Auto-generated method stub
savefile();
}
}
@Override
protected void paintComponent(Graphics g) 
{
//TODO Auto-generated method stub
super.paintComponent(g);
for(int i = 0;i <pointCount;i++)
{   
g.setColor(Color.RED);
g.drawLine(points[i].x, points[i].y, pointends[i].x, pointends[i].y);
}           
}
private class MouseHandler extends MouseAdapter
{  
@Override
public void mouseDragged(MouseEvent e) 
{
//TODO Auto-generated method stub
pointends[ pointCount-1] = e.getPoint();
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
//TODO Auto-generated method stub
super.mousePressed(e);
if(pointCount < points.length)
{
points[ pointCount ] = e.getPoint();
pointends[ pointCount ] = e.getPoint();
pointCount++; 
repaint();
}
}
@Override
public void mouseReleased(MouseEvent e) {
//TODO Auto-generated method stub
super.mouseReleased(e);
/*pointends[pointCount]=e.getPoint();
repaint();
pointCount++;
*/
}
}
}
public void savefile()
{
BufferedImage image2 = new BufferedImage(panel.WIDTH, panel.HEIGHT,     BufferedImage.TYPE_INT_RGB);
JFileChooser jFile = new JFileChooser();
jFile.showSaveDialog(null);
Path pth = jFile.getSelectedFile().toPath();
JOptionPane.showMessageDialog(null, pth.toString());
Graphics2D graphics2D = image2.createGraphics();
try {
ImageIO.write(image2, "", new File(pth.toString()));
} catch (IOException ox) {
//TODO: handle exception
ox.printStackTrace();
}
}
}
Respecter les conventions de nommage Java. Nom de la classe de NE PAS commencer par une minuscule.

OriginalL'auteur | 2013-10-27