"Type mismatch: cannot convert from Boolean to boolean"

"Type mismatch: cannot convert from Boolean to boolean"

我目前正在尝试 运行 下面的代码,但我不断收到错误消息 "Type mismatch: cannot convert from Boolean to boolean"。这让我特别困惑,因为:1) 我不确定我在哪里尝试进行这样的转换,以及 2) 代码 运行s 与我使用过的其他计算机上的 Eclipse 完美结合。

谁能指出这里可能存在的问题?我很困惑。顺便说一句,错误来自这些行:

SizeCustom = false;

SizeCustom = true;

if (SizeCustom) {

完整代码中:

import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;

//import java.io.ByteArrayInputStream;
//import java.io.InputStream;
//import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
//import javax.swing.plaf.ButtonUI;
import javax.swing.WindowConstants;

import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgproc.Imgproc;

public class Imshow {

public JFrame Window;
private ImageIcon image;
private JLabel label;
// private MatOfByte matOfByte;
private Boolean SizeCustom;
private int Height, Width;

public Imshow(String title) {
    Window = new JFrame();
    image = new ImageIcon();
    label = new JLabel();
    // matOfByte = new MatOfByte();
    label.setIcon(image);
    Window.getContentPane().add(label);
    Window.setResizable(false);
    Window.setTitle(title);
    SizeCustom = false;
    setCloseOption(0);
}

public Imshow(String title, int height, int width) {
    SizeCustom = true;
    Height = height;
    Width = width;

    Window = new JFrame();
    image = new ImageIcon();
    label = new JLabel();
    // matOfByte = new MatOfByte();
    label.setIcon(image);
    Window.getContentPane().add(label);
    Window.setResizable(false);
    Window.setTitle(title);
    setCloseOption(0);

}

public void showImage(Mat img) {
    if (SizeCustom) {
        Imgproc.resize(img, img, new Size(Height, Width));
    }
    // Highgui.imencode(".jpg", img, matOfByte);
    // byte[] byteArray = matOfByte.toArray();
    BufferedImage bufImage = null;
    try {
        // InputStream in = new ByteArrayInputStream(byteArray);
        // bufImage = ImageIO.read(in);
        bufImage = toBufferedImage(img);
        image.setImage(bufImage);
        Window.pack();
        label.updateUI();
        Window.setVisible(true);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

'Boolean' 和 'boolean' 实际上是不同的。 'Boolean' 是一个 class,而 'boolean' 是一个原语。您有一个 if 语句检查 SizeCustom 的 'boolean' 值,但 SizeCustom 是 'Boolean'。您可以执行以下两项操作之一:

1) 将 SizeCustom 更改为 'boolean' 类型。

2) 在 'Boolean' 类型的 SizeCustom 上使用 'booleanValue()' 方法来获取 if 语句的 'boolean' 值。

您使用 private Boolean SizeCustom 而不是 private boolean SizeCustom 有什么原因吗?如果没有,最好改成boolean。 Boolean 和 boolean 之间的区别在于 Boolean 是 class 而 boolean 是原始值。

它之前起作用的原因是您可能在其他 PC 上使用了更新版本的 JDK。 JDK 1.5 (Java 5) 中引入了自动装箱(布尔值到布尔值,反之亦然)。如果您使用的是旧版本,这就是它无法正常工作的原因。