zrobienie image z JPanel

0

Witam
Mam pytanie. Mam zakładkę JPanel i chciałbym żeby cały JPanel zmieniło na Image.Czy jest taka możliwość?
Jeśli tak to prosiłbym o pomoc. Z góry dziękuje

0

Chodzi mi o to żeby z JPanela pobrać wyglad i zrobić z tego obrazek.

0

Google : get image from jpanel
Pierwsza strona
http://forum.java.sun.com/thread.jspa?threadID=173336&messageID=2044327

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.JPEGCodec;
import java.io.*;

public class Main extends JFrame implements ActionListener {
	private JPanel panel;
	private JButton save;

	public Main() {
		super("JPanel img");
		this.setSize(400,300);
		this.getContentPane().setLayout(new BorderLayout());
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		save = new JButton("Zapisz");
		save.addActionListener(this);
		save.setActionCommand("save");

		panel = new JPanel();
		panel.setBackground(new Color(0x800000));
		panel.add(new JTextField("Bla bla bla"));
		panel.add(save);

		this.getContentPane().add(BorderLayout.CENTER, panel);
		this.setVisible(true);
	}

	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equalsIgnoreCase("save")) {
			savePanelImage(panel);
		}
	}

	public static void main(String[] args) {
		try {
			new Main();
		}catch(Exception e) {
			e.printStackTrace();
		}

	}

	private void savePanelImage(JPanel panel) {
		BufferedImage bi =
			new BufferedImage(panel.getSize().width,panel.getSize().height,BufferedImage.TYPE_INT_RGB);
		Graphics2D g = bi.createGraphics();

		panel.paint(g);
		g.dispose();

		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
		JFileChooser fc = new JFileChooser("c:/");
		fc.showSaveDialog(this);

		try {
			encoder.encode(bi);
			byte[] jpgData = bos.toByteArray();
			FileOutputStream fos = new FileOutputStream(fc.getSelectedFile());
			fos.write(jpgData);
			fos.close();
		} catch (Exception ex) {
			System.out.println("Could not save image");
		}
	}
}
0

Dziękuje. Ale chodzi mi o to żeby zmniejszyć i wrzucić do wydrukowania. Jak można to zrobić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1