"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) 中引入了自动装箱(布尔值到布尔值,反之亦然)。如果您使用的是旧版本,这就是它无法正常工作的原因。
我目前正在尝试 运行 下面的代码,但我不断收到错误消息 "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) 中引入了自动装箱(布尔值到布尔值,反之亦然)。如果您使用的是旧版本,这就是它无法正常工作的原因。