首先查看AWT中的绘画和Swing和执行自定义绘画,以获取有关绘画工作原理的更多信息。
永远不要使用getGraphics
,这只是个坏主意,不会给您带来麻烦。
一般来说,应避免paint
直接调用,而应使用print
或printAll
。这将禁用正常绘制过程中固有的双重缓冲,这可能会导致
JLabel srcLabel = new JLabel();
JLabel dest = new JLabel();
BufferedImage img = new BufferedImage(srcLabel.getWidth(), srcLabel.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
srcLabel.printAll(g2d);
g2d.dispose();
dest.setIcon(new ImageIcon(img));
这假定srcLabel
已经显示并布置了。