jak mam zapisac to co na panelu narysowałem do pliku jpg po prostu rysuje sobie po panelu i chce to zapisac do pliku jpg
saveAction.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
BufferedImage bi = new BufferedImage(mf.getWidth(), mf.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D d2d = bi.createGraphics();
File out = new File("image.jpg");
panel.paint(d2d);
try {
ImageIO.write(bi, "jpg", out);
} catch (IOException ox) {
// TODO: handle exception
ox.printStackTrace();
}
// TODO Auto-generated method stub
}
});
mam cos takiego ale nic sie nie dzieje po tym juz nie wiem sam
package paintv1;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Panel;
import javax.swing.JFrame;
public class MainFrame extends JFrame {
private static final long serialVersionUID = 1L;
private static final Dimension SIZE = new Dimension(800, 600);
private DrawPanel panel = new DrawPanel();
public MainFrame(){
super("Java Paint");
setLayout(new BorderLayout());
Pasek topOkno = new Pasek();
setJMenuBar(topOkno);
this.add(panel, BorderLayout.CENTER);
DrawControls con = new DrawControls(panel);
this.add(con, BorderLayout.NORTH);
setSize(SIZE);
setResizable(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
}
i jeszcze klasa DrawPanel
package paintv1;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Vector;
import javax.imageio.ImageIO;
public class DrawPanel extends Panel implements MouseListener, MouseMotionListener {
/**
* @return
*
*/
private static final long serialVersionUID = 1L;
public static final int LINIA = 0;
public static final int FREEHAND = 1;
public static final int PROSTOKAT = 2;
public static final int OKRAG = 3;
public static final int PROSTOKAT_PELNY = 4;
public static final int OKRAG_PELNY = 5;
int mode = LINIA; //linia - defoltowa
Vector<objekt> figury = new Vector<objekt>(); //Vector, w którym zapamiętywane sš dane figur
Vector<Color> kolory = new Vector<Color>(); //Vector, w którym zapamiętywane sš kolory figur
int x1,y1; // wspolrzedne poczatku
int x2,y2; // wspolrzedne konca
public DrawPanel()
{
setBackground(Color.white);//ustawienie tła na białe
addMouseMotionListener(this);// obsluga myszy
addMouseListener(this); // obsluga myszy
}
public void setDrawMode(int mode) //wybór trybu rysowania
{
switch (mode)
{
case LINIA:
case FREEHAND:
case PROSTOKAT:
case PROSTOKAT_PELNY:
case OKRAG:
case OKRAG_PELNY:
this.mode = mode;// ustawienie aktualnego trybu rysowania
break;
default:
throw new IllegalArgumentException();
}
}
@Override
public void mouseDragged(MouseEvent e) {
e.consume();
switch (mode)
{
case LINIA:
x2 = e.getX();
y2 = e.getY();
break;
case PROSTOKAT:
x2 = e.getX();
y2 = e.getY();
break;
case OKRAG:
x2 = e.getX();
y2 = e.getY();
break;
case FREEHAND:
kolory.addElement(getForeground()); //zapamiętanie w zmiennej typu Vector koloru lini
figury.addElement(new objekt(x1, y1, e.getX(), e.getY(),0)); //dodanie do Vector obiektu z parametrami lini składajšcej się na FREEHAND
x1 = e.getX();
y1 = e.getY();
break;
case PROSTOKAT_PELNY:
x2 = e.getX();
y2 = e.getY();
break;
case OKRAG_PELNY:
x2 = e.getX();
y2 = e.getY();
break;
}
repaint();
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
e.consume();
switch (mode)
{
case LINIA:
x1 = e.getX();
y1 = e.getY();
x2=-1;
break;
case PROSTOKAT:
x1 = e.getX();
y1 = e.getY();
x2=-1;
break;
case OKRAG:
x1 = e.getX();
y1 = e.getY();
x2=-1;
break;
case FREEHAND:
kolory.addElement(getForeground()); //j.w.
figury.addElement(new objekt(e.getX(), e.getY(), e.getX(), e.getY(),0));
x1 = e.getX();
y1 = e.getY();
break;
case PROSTOKAT_PELNY:
x1 = e.getX();
y1 = e.getY();
x2=-1;
break;
case OKRAG_PELNY:
x1 = e.getX();
y1 = e.getY();
x2=-1;
break;
}
// TODO Auto-generated method stub
repaint();
}
@Override
public void mouseReleased(MouseEvent e) {
e.consume();
switch (mode)
{
case LINIA:
kolory.addElement(getForeground());
figury.addElement(new objekt(x1, y1, e.getX(), e.getY(),1));
x2=-1;
break;
case PROSTOKAT://zapamiętuje kolor,współrzędne poczštku x1,y1,współrzędne w momencie puszczenia klawisza,rodzaj figury(2-prostokšt)
kolory.addElement(getForeground());
figury.addElement(new objekt(x1, y1,e.getX(),e.getY(),2));
x2=-1;
break;
case OKRAG:
kolory.addElement(getForeground());
figury.addElement(new objekt(Math.min(x1,e.getX()),Math.min(y1,e.getY()),Math.abs(e.getX()-x1),Math.abs(e.getY()-y1),3));
x2 = -1;
break;
case FREEHAND:
default:
break;
case PROSTOKAT_PELNY://zapamiętuje kolor,współrzędne poczštku x1,y1,współrzędne w momencie puszczenia klawisza,rodzaj figury(2-prostokšt)
kolory.addElement(getForeground());
figury.addElement(new objekt(x1, y1,e.getX(),e.getY(),4));
x2=-1;
break;
case OKRAG_PELNY:
kolory.addElement(getForeground());
figury.addElement(new objekt(Math.min(x1,e.getX()),Math.min(y1,e.getY()),Math.abs(e.getX()-x1),Math.abs(e.getY()-y1),5));
x2 = -1;
break;
}
repaint();
// TODO Auto-generated method stub
}
public void paint(Graphics g)
{
int np = figury.size();
g.setColor(getForeground());
for (int i=0; i < np; i++) //rysowanie wszystkich figur zapamiętanych w vektorze
{
objekt o = (objekt)figury.elementAt(i);
g.setColor((Color)kolory.elementAt(i));
if (o.typ==1||o.typ==0)g.drawLine(o.x3, o.y3, o.x4,o.y4);
if (o.typ==2){if (o.x4<o.x3&&o.y4<o.y3) g.drawRoundRect(o.x4,o.y4,Math.abs(o.x4-o.x3),Math.abs(o.y4-o.y3),0,0); //jeli prostokšt
if (o.x4>o.x3&&o.y4>o.y3) g.drawRoundRect(o.x3,o.y3,Math.abs(o.x4-o.x3),Math.abs(o.y4-o.y3),0,0);
if (o.x3<o.x4&&o.y3>o.y4) g.drawRoundRect(o.x4-Math.abs(o.x4-o.x3),o.y4,Math.abs(o.x4-o.x3),Math.abs(o.y4-o.y3),0,0);
if (o.x3>o.x4&&o.y3<o.y4) g.drawRoundRect(o.x4,o.y4-Math.abs(o.y4-o.y3),Math.abs(o.x4-o.x3),Math.abs(o.y4-o.y3),0,0); }
if (o.typ==3) g.drawOval(o.x3,o.y3,o.x4,o.y4);
if (o.typ==4){
if (o.x4<o.x3&&o.y4<o.y3) g.fillRoundRect(o.x4,o.y4,Math.abs(o.x4-o.x3),Math.abs(o.y4-o.y3),0,0);
if (o.x4>o.x3&&o.y4>o.y3) g.fillRoundRect(o.x3,o.y3,Math.abs(o.x4-o.x3),Math.abs(o.y4-o.y3),0,0);
if (o.x3<o.x4&&o.y3>o.y4) g.fillRoundRect(o.x4-Math.abs(o.x4-o.x3),o.y4,Math.abs(o.x4-o.x3),Math.abs(o.y4-o.y3),0,0);
if (o.x3>o.x4&&o.y3<o.y4) g.fillRoundRect(o.x4,o.y4-Math.abs(o.y4-o.y3),Math.abs(o.x4-o.x3),Math.abs(o.y4-o.y3),0,0); }
if (o.typ==5)g.fillOval(o.x3,o.y3,o.x4,o.y4);
}
//rysowanie konturów rysowanych figur
if (mode == LINIA)
{
g.setColor(getForeground());
if (x2 != -1) g.drawLine(x1, y1, x2, y2);
}
if (mode == PROSTOKAT)
{g.setColor(getForeground());
if (x2 != -1) {if (x1<x2&&y1<y2)g.drawRoundRect(x1, y1,Math.abs(x2-x1),Math.abs(y2-y1),0,0);
if (x1>x2&&y1>y2)g.drawRoundRect(x2, y2,Math.abs(x2-x1),Math.abs(y2-y1),0,0);
if (x1<x2&&y1>y2)g.drawRoundRect(x2-Math.abs(x2-x1),y2,Math.abs(x2-x1),Math.abs(y2-y1),0,0);
if (x1>x2&&y1<y2)g.drawRoundRect(x2, y2-Math.abs(y2-y1),Math.abs(x2-x1),Math.abs(y2-y1),0,0); }
}
if (mode == PROSTOKAT_PELNY)
{
g.setColor(getForeground());
if (x2 != -1) {if (x1<x2&&y1<y2)g.fillRoundRect(x1, y1,Math.abs(x2-x1),Math.abs(y2-y1),0,0);
if (x1>x2&&y1>y2)g.fillRoundRect(x2, y2,Math.abs(x2-x1),Math.abs(y2-y1),0,0);
if (x1<x2&&y1>y2)g.fillRoundRect(x2-Math.abs(x2-x1),y2,Math.abs(x2-x1),Math.abs(y2-y1),0,0);
if (x1>x2&&y1<y2)g.fillRoundRect(x2, y2-Math.abs(y2-y1),Math.abs(x2-x1),Math.abs(y2-y1),0,0); }
}
if (mode == OKRAG_PELNY)
{
g.setColor(getForeground());
if (x2 != -1) g.fillOval(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y2-y1));
}
}
}
//zamieniłem
na
// - bogdans