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
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ć?