Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么赢了';我的图像是否显示在Java小程序中?_Java_Image_Applet - Fatal编程技术网

为什么赢了';我的图像是否显示在Java小程序中?

为什么赢了';我的图像是否显示在Java小程序中?,java,image,applet,Java,Image,Applet,当我使用以下代码时: public void paint(Graphics g){ //Displays version number and name. g.setFont(new Font("Courier", Font.PLAIN, 10)); g.drawString("DCoder " + execute.Execute.version, 2, 10); //Displays logo in center. g.drawImage(l

当我使用以下代码时:

    public void paint(Graphics g){

    //Displays version number and name.
    g.setFont(new Font("Courier", Font.PLAIN, 10));
    g.drawString("DCoder " + execute.Execute.version, 2, 10);

    //Displays logo in center.
    g.drawImage(logo, centerAlign(logo.getWidth(null)), 50, this);


}

private int width(){
    //Gets and returns width of applet.
    int width = getSize().width;
    return width;
}
private int height(){
    //Gets and returns height of applet.
    int height = getSize().height;
    return height;
}

private int centerAlign(int obWidth){
    int align = (width()-obWidth)/2;
    return align;
}
在我的Java小程序中,在调用repaint()之前(通过调整小程序查看器窗口的大小),图像不会显示吗?为什么图像不显示

为什么图像不显示

很可能是因为它是使用异步方法加载的

为什么图像不显示


很可能是因为它是使用异步方法加载的。

因此必须处理异步加载的映像

logo.getWidth(this); // Indicate asynchronous ImageObserver

异步读取图像时,
getWidth(null)
将返回0,直到确定宽度等。因此,我们需要小心一点


解释

加载图像是为了异步完成的。图像已经可用,但在读取之前
getWidth
和/或
getHeight
为-1。您可以将ImageObserver传递给getWidth/getHeight,然后在图像读取过程中通知它。现在JApplet已经是一个ImageObserver了,所以您只需传递
这个

读取代码将被传递/注册的ImageObserver的方法imageUpdate更新,以发出更改信号;宽度是已知的,有些位(=不是全部),因此可以绘制预览,如JPEG像素化预览

这种异步技术出现在互联网发展缓慢的早期


如果您想更简单地读取图像,请使用
ImageIO.read(…)

必须这样处理异步加载的图像

logo.getWidth(this); // Indicate asynchronous ImageObserver

异步读取图像时,
getWidth(null)
将返回0,直到确定宽度等。因此,我们需要小心一点


解释

加载图像是为了异步完成的。图像已经可用,但在读取之前
getWidth
和/或
getHeight
为-1。您可以将ImageObserver传递给getWidth/getHeight,然后在图像读取过程中通知它。现在JApplet已经是一个ImageObserver了,所以您只需传递
这个

读取代码将被传递/注册的ImageObserver的方法imageUpdate更新,以发出更改信号;宽度是已知的,有些位(=不是全部),因此可以绘制预览,如JPEG像素化预览

这种异步技术出现在互联网发展缓慢的早期


如果您想更简单地阅读图像,请使用
ImageIO.read(…)

更快地获得更好的帮助,请发布一个。要更快地获得更好的帮助,请发布一个。imageUpdate方法试图向我展示什么?无论如何,感谢您的帮助。在读取图像时,读取代码将以不同的方式调用此方法。例如,在第一次调用时,只知道宽度(width),稍晚一点还知道高度。这允许对图像进行布局,当最终使用ALLBITS调用它时,您可以完全绘制它。我仍然不明白如何使用此代码来获取宽度。你能进一步解释一下吗?imageUpdate方法试图向我展示什么?无论如何,感谢您的帮助。在读取图像时,读取代码将以不同的方式调用此方法。例如,在第一次调用时,只知道宽度(width),稍晚一点还知道高度。这允许对图像进行布局,当最终使用ALLBITS调用它时,您可以完全绘制它。我仍然不明白如何使用此代码来获取宽度。你能进一步解释一下吗?