java - 在java中并排显示图片

标签 java swing javax.imageio

是否可以使用 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,这导致第一次调用基本上什么都不做。这意味着您的 preferredSize 始终等于第二张图片的尺寸。您应该做的是将尺寸设置为 new Dimension(image.getWidth() + image2.getWidth(), image2.getHeight()) 假设两者具有相同的尺寸高度。如果不是这种情况,请将 height 设置为两个图像的最大值。

其次,您需要将第二张图片从第一张图片精确地偏移第一张图片的宽度:

g2d.drawImage(image, 0, 0, this);
g2d.drawImage(image2, image.getWidth(), 0, this);

关于java - 在java中并排显示图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54403418/

相关文章:

java - Powermock imageio 不满意链接错误

java - 从android应用程序的root设备中的android根文件系统中的/dev/test文件读写数据

java - 新的 Google Map Api for Java 应用程序,在 JPanel 中添加 map

Java 图形重绘行为

java - 基于 TableCell 值的 JTable 行高亮器

java - 奇怪的 PNG 错误 : Bad length for IHDR chunk

java - ImageIO 无法读取某些图像

java - Android MyLocationOverlay 与 LocationManager/LocationListener

java - 使用 ServiceLoader 获取提供多个服务的服务提供者类的同一实例

java - 在 actionPerformed() 方法之外使用变量