如何在Java中将一个Swing组件的图形图像复制到另一个
我刚刚开始我的Java
编程3个月前,我的问题是 –
如何将JLabel
或JPanel
图形复制到另一个JLabel
或JPanel
。
我用过 –
JLabel dest = new JLabel(); dest.paint(srcLabel.getGraphics()); panel.add(dest); dest.validate();
但由于缺乏知识,我在这里停留。 请帮忙。
首先来看看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
。
现在的问题是为什么? 简单地设置第二个标签的text
和icon
属性以便与第一个标签匹配会不会更容易?