package test.testcopy;import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage;public class TestCopy { public static void main(String[] args) { final JFrame f = new JFrame(); JPanel p = new JPanel(new GridLayout(2,1)); f.setContentPane(p); final JPanel p1 = new JPanel(new BorderLayout()); final JLabel label = new JLabel(); p.add(p1); p1.add(new JTextField(),BorderLayout.CENTER); JButton bt = new JButton("COPY"); p1.add(bt,BorderLayout.EAST); bt.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ BufferedImage bi = (BufferedImage)f.createImage(p1.getWidth(),p1.getHeight()); Graphics g = bi.createGraphics(); p1.print(g); label.setIcon(new ImageIcon(bi)); } });
BufferedImage createScreenCapture(Rectangle screenRect)计算Container的绝对位置,构造Rectangle screenRect,再调用Robot类的createScreenCapture方法,可返回矩形区域屏幕图象BufferedImage,再将这个Image画到JPanel上去。
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;public class TestCopy { public static void main(String[] args) {
final JFrame f = new JFrame();
JPanel p = new JPanel(new GridLayout(2,1));
f.setContentPane(p);
final JPanel p1 = new JPanel(new BorderLayout());
final JLabel label = new JLabel();
p.add(p1);
p1.add(new JTextField(),BorderLayout.CENTER);
JButton bt = new JButton("COPY");
p1.add(bt,BorderLayout.EAST);
bt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
BufferedImage bi = (BufferedImage)f.createImage(p1.getWidth(),p1.getHeight());
Graphics g = bi.createGraphics();
p1.print(g);
label.setIcon(new ImageIcon(bi));
}
});
JPanel p2 = new JPanel(new BorderLayout());
p.add(p2);
p2.add(label);
f.setSize(400,400);
f.show();
}
}