【发布时间】:2019-01-28 13:49:42
【问题描述】:
是否可以使用 BufferedImage 和 Graphics2D 并排显示两张图片?还是应该用其他方法?
在下面的代码中,我可以显示两张图片,但图片 1 与图片 2 重叠。
package zdjecie;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class ObrazPanel extends JPanel {
private BufferedImage image;
private BufferedImage image2;
public ObrazPanel() {
super();
File imageFile = new File("C:\\Users\\KostrzewskiT\\eclipse-workspace\\zdjecie\\src\\zdjecie\\java.jpg");
File imageFile2 = new File("C:\\Users\\KostrzewskiT\\eclipse-workspace\\zdjecie\\src\\zdjecie\\java2.jpg");
try {
image = ImageIO.read(imageFile);
image2 = ImageIO.read(imageFile2);
} catch (IOException e) {
System.err.println("Blad odczytu obrazka");
e.printStackTrace();
}
Dimension dimension = new Dimension(image.getWidth(), image.getHeight());
setPreferredSize(dimension);
Dimension dimension2 = new Dimension(image2.getWidth(), image2.getHeight());
setPreferredSize(dimension2);
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(image, 0, 0, this);
g2d.drawImage(image2, 200, 200, this);
}
}
【问题讨论】:
-
如果它们重叠,是因为您没有正确定位它们吗?
-
那么史蒂夫如何正确定位它们?
-
我认为您的
setPreferredSize(dimension);代码是错误的,因为您是在 JPanel 上调用它的。您是否希望这会改变图像的大小? -
更改
g2d.drawImage(image2, 200, 200, this);中的值,使它们不会重叠。 -
with BufferedImage and Graphics2D- 为什么?只需从 BufferedImage 创建一个 ImagIcon 并使用 ImageIcon 创建一个 JLabel。然后,您只需将标签添加到面板,您就可以使用您想要显示图像的任何布局管理器。 JPanel 的默认 FlowLabel 并排显示图像。
标签: java swing javax.imageio