2015-02-24 141 views
0

我正在尝试运行下面的代码,但我不断收到错误消息“类型不匹配:无法从布尔型转换为布尔型”。这对我来说尤其令人困惑,因为:1)我不确定我在哪里尝试进行这种转换,以及2)代码在我用过的其他计算机上与Eclipse完美搭配。“类型不匹配:无法从布尔型转换为布尔型”

任何人都可以指出什么问题可能在这里?我很困惑。顺便说一句,这些错误来自于这些行:

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(); 
    } 
} 
+1

创建一个再现问题的最小示例。 – aioobe 2015-02-24 14:06:44

+0

它在构造函数中被设置为“false”。这会使它非空吗? – Zetland 2015-02-24 14:06:46

+3

哪条线给你这个错误? – SMA 2015-02-24 14:06:51

回答

4

'布尔' 和 '布尔' 是:

SizeCustom = false;

SizeCustom = true;

if (SizeCustom) {

在全码

实际不同。 '布尔'是一个类,而'布尔'是一个基元。你有一个if语句检查SizeCustom的'boolean'值,但SizeCustom是'布尔'。您可以执行以下两项操作之一:

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

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

+0

Autoboxing应该照顾它。可能值得检查JDK合规性级别的Eclipse项目设置 - 确保它大于等于1.5。 – Dan 2015-02-24 14:13:02

+0

解决它与1)。谢谢! – Zetland 2015-02-24 14:17:07

2

您有使用private Boolean SizeCustom的原因是private boolean SizeCustom吗?如果没有,最好将其更改为boolean。布尔和布尔之间的区别在于,布尔是一个类,布尔是一个原语。

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

相关问题