JNI读文件造成GUI图片不显示的问题

问题描述

用JNI封装了一个Win32dll(读取特定文件),swingGUI调用时,JNI方法返回结果都正常,但是调用该方法一次以后,GUI上未加载的界面(JFrame,JDialog,JPanel)打开后,上面的图片(如JButton,JLabel图标等)会部分丢失,在调用JNI方法前已经加载的界面上的图片则还在。java无任何错误输出,多次调用该方法后GUI内存也无明显增长。请问这可能是什么原因呢?

解决方案

解决方案二:
手动刷新一下行不调用一下刷新
解决方案三:
这个不应该是JNI造成的吧,调用方法之后swing是不是发生重绘了?到底什么情况,楼主说的再具体点
解决方案四:
调用该JNI方法前,图片之前显示过的,再调用都还在,没有显示过的,调用就不显示了感觉是调用JNI方法后资源无法加载进JVM了??比如说调用该JNI方法后,打开一个未开过的JDialog,上面某JButton上应有的图片不显示了。但是调试输出ImageIconico=(ImageIcon)Btn_xxx.getIcon();发现ico确实存在调试查看"ico"=ImageIcon(id=345)accessibleContext=nulldescription=".\img\new.gif"filename=".\img\new.gif"height=-1image=ToolkitImage(id=363)imageObserver=nullloadStatus=4location=nullwidth=-1用Btn_xxx.repaint();Btn_xxx.updateUI();还是一样,不显示该按钮图标。
解决方案五:
那你的JNI对界面有重绘操作?JNI都做什么了?调用完dll之后,有没有new什么东西放在界面上,把原来的按钮遮住了?感觉你这个还是重绘有点问题,有点怪异啊,呵呵。
解决方案六:
好像是有问题,下面是一个加载正常的imageIcon:"ico"=ImageIcon(id=429)accessibleContext=nulldescription=".\img\icon\refresh.gif"filename=".\img\icon\refresh.gif"height=24image=ToolkitImage(id=431)imageObserver=nullloadStatus=8location=nullwidth=24看了一下JDK,loadStatus=8是图像正常,loadStatus=4是图像加载错误/***Flagindicatingthatthedownloadingofmediaencountered*anerror.*@seejava.awt.MediaTracker#statusAll*@seejava.awt.MediaTracker#statusID*/publicstaticfinalintERRORED=4;/***Flagindicatingthatthedownloadingofmediawascompleted*successfully.*@seejava.awt.MediaTracker#statusAll*@seejava.awt.MediaTracker#statusID*/publicstaticfinalintCOMPLETE=8;
解决方案七:
JNI只是读取特定格式的文件,返回文件中存储的点信息,返回都正常。没有其他对界面的操作啊,调用后其他所有的界面上未加载的图标都加载失败了是好怪异,可能是封装的dll的问题吗
解决方案八:
又试了一下,把图片的相对路径设为绝对路径,图片居然显示了。StringrelativelyPath=System.getProperty("user.dir");Btn_xxx.setIcon(newImageIcon(relativelyPath+"\img\new.gif"));相对路径还是无法显示。Btn_AddPortGroup.setIcon(newImageIcon(".\img\new.gif"));是调用jni方法后,把".\"的相对路径更改了么?这个在java里哪里可以改?

时间: 2024-10-02 05:19:10

JNI读文件造成GUI图片不显示的问题的相关文章

用vb.net自定义控件,可以选择文件夹下的图片并显示图片的名称,怎么做

问题描述 用vb.net自定义控件,可以选择文件夹下的图片并显示图片的名称,怎么做 急求!!!就是就是从文件夹中可以选择图片,但下面要获取图片的名字,比如11.jpg,22.jpg.这不是图片的名字么,要和图片信息一致.从文件夹中选择图片,要用什么语句?是用filename获取文件的名字么,我是菜鸟,完全不知道怎么写〉〉〉...... 解决方案 用openfiledialog 参考:http://www.poluoluo.com/jzxy/200809/45925.htmlhttp://www.

nginx配置-请大神帮我看下关于nignx配置的问题 怎么直接显示本地文件夹的图片

问题描述 请大神帮我看下关于nignx配置的问题 怎么直接显示本地文件夹的图片 (http://img.ask.csdn.net/upload/201511/06/1446781669_124073.png) 请大神帮我看一下怎么直接显示图片 而不是显示index.html 还有 localhost/nginx-1.9.0这个地方应该写什么

php遍历、读取文件夹中图片并分页显示图片的方法_php技巧

本文实例讲述了php遍历.读取文件夹中图片并分页显示图片的方法.分享给大家供大家参考,具体如下: 引子:我的网站图片目录images下有若干图片如1.jpg.2.jpg.3.jpg.--.n.jpg.1.gif.2.gif.3.gif.--.n.gif,要求在该images目录下建一个index.php文件,使得该文件分页显示images目录下的所有图片. 下面是我想到的办法.不知道有没有更好的办法.呵呵...在图片文件夹images下面建一个index.php文件,内容如下: <?php ec

使用FileUpload控件上传图片,上传不到文件夹,数据库也没有写入,图片无法显示。

问题描述 使用FileUpload控件上传图片,图片上传不到文件夹,数据库也没有写入图片的表,图片无法显示.但其他都正常,都能显示前台页面代码:<bodystyle="background-image:url(../images/right.png);background-repeat:no-repeat;"><formid="form1"runat="server"><div><br/><b

求助!怎么把数据库表里的数据读出来放到.txt文件中!列名也显示读出来!

问题描述 求助!怎么把数据库表里的数据读出来放到.txt文件中!列名也显示读出来!这样怎么实现!idnamesex1张三男2李四男3王五女求助急求谢谢!大侠们指教下!谢谢! 解决方案 解决方案二:去看看jdbc和io解决方案三:该回复于2011-05-05 15:29:56被版主删除解决方案四:什么数据库你是要做一个导出的功能还是只是手工导出一些数据解决方案五:支持一楼!

php随机显示指定文件夹下图片的方法_php技巧

本文实例讲述了php随机显示指定文件夹下图片的方法.分享给大家供大家参考.具体如下: 此代码会从指定的服务器文件夹随机选择一个图片进行显示,非常有用,图片格式为.gif,.jpg,.png <?php //This will get an array of all the gif, jpg and png images in a folder $img_array = glob("/path/to/images/*.{gif,jpg,png}",GLOB_BRACE); //Pi

android-使用 Bitmap 时,图片不能显示

问题描述 使用 Bitmap 时,图片不能显示 请大家帮我看看下面的代码,为什么图像不能在list中显示,然而空间和图像的其他描述却能看得见. public class Test extends ListActivity { Prefs myprefs = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.la

asp.net中读取本地带水印的图片不显示

问题描述 做了一个带有读取图片功能的东西,在客户那去调试,发现客户机器中带水印,然后,在程序中读水印图片都显示不出来.请问朋友们遇到过这种情况么,如果遇到过,问下解决了木有!!!现在这个问题很着急啊 解决方案 解决方案二:问题描述不明--别人读取带水印,估计是程序在显示的时候加上的水印,原图应该是没水印的解决方案三:或者你吧一个图上传上来看看解决方案四:我在描述下,客户的机器是带水印的机器,他里面的文档,图片等都是水印的.也就是说他原图就是带水印的图片.当初做这个东西的时候没考虑到水印问题.我这

android文件操作与图片压缩

目标:从sdcard中读取图片,并按一定的比例进行缩放,并保存到应用程序的目录下,同时通过ImageView显示保存的图片 分析: android的文件系统与Linux的文件系统是一致的,但是出于一种安全的考虑,应用程序不能随意地创建文件和目录,也就是说应用程序不能随意跨越自己程序的边界,因此,应用程序一般只允许在自身程序的目录下才能进行自由的文件操作.通过Eclipse的DDMS视图可以看到android的应用程序的位置是 /data/data/,而文件则保存在 /data/data//fil