Popular Posts
Enable edit option in Shutter in Linux sudo apt-get install libgoo-canvas-perl Reference: How To Fix Disabled Edit Option In Shutter in Linux Mint CORS in Asp.net MVC Web API v2 Step 1. Install cors from NeGet Step 2. Enable cors in config using System; using System.Collections.Generic; using System.Linq; using ... DNS SERVER LIST Google 8.8.8.8 8.8.4.4 TWNIC 192.83.166.11 211.72.210.250 HiNet 168.95.1.1 168.95.192.1 Seednet 北區 DNS (台北, 桃園, 新竹, 宜蘭, 花蓮, 苗栗) 139....
Blog Archive
Stats
Convert swing component to image
package y11.m03;

import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextField;

public class PrintTester {

    public static void main(String[] args) throws IOException {
        JPanel p = new JPanel(new GridLayout(2, 2));
        p.add(new JTextField("wwww", 20));
        p.add(new JLabel("dfdfdf"));
        p.add(new JSpinner());
        p.add(new JButton("fdfdf"));

        BufferedImage image = createImage(p);
        ImageIO.write(image, "png", new File("PrintTest2.png"));
    }

    // if component is rendered
    public static BufferedImage createImage(JComponent component) {
        int w = component.getWidth();
        int h = component.getHeight();
        BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = img.createGraphics();
        component.paint(g);
        return img;
    }

    // if component is not rendered
    public static BufferedImage createImage(JComponent component, AffineTransform transform) throws IOException, ClassNotFoundException {
        if (component == null)
            return null;
        JFrame f = new JFrame(); // for paint
        JComponent clone = (JComponent) clone(component);
        f.add(clone);
        f.pack();

        BufferedImage image = new BufferedImage(clone.getWidth(), clone.getHeight(), BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = image.createGraphics();
        if (transform != null)
            g.setTransform(transform);
        clone.paint(g);
        f.dispose();
        return image;
    }

    public static <T extends Serializable> T clone(T source) throws IOException, ClassNotFoundException {
        Object newObject = new Object();
        ObjectOutputStream ooStr = null;
        ByteArrayOutputStream baoStr = new ByteArrayOutputStream();
        ooStr = new ObjectOutputStream(baoStr);
        ooStr.writeObject(source);
        ooStr.flush();
        ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(baoStr.toByteArray()));
        newObject = in.readObject();
        ooStr.close();
        return (T) newObject;
    }
}