java - 如何将图像从项目目录检索到 jlabel?
问题描述
我是 java netbeans 8 的新用户。我想将员工插入 sql server DB。我使用 jlabel 来显示选定的图像,并且 jlabel 具有用户的本地背景。BG 存储在 src 中,在 src 中,我创建了 Image 文件夹,在 Image 文件夹中,我有一个名为 24 的文件夹。在 24 文件夹中,我存储了我的 bg 图像 namce employeebg.png。
我需要插入后,所有文本都清晰,jlabel/lbpicture 回到employeebg.png。
我使用此代码。
private String getpath=null;
private byte[] image=null;
private File opt=null;
private FileInputStream FIS;
try{
getpath = "\\Image\\24\\employeebg.png";
opt = new File(getpath);
FIS=new FileInputStream(opt);
ByteArrayOutputStream array = new ByteArrayOutputStream();
byte[] imagedata=new byte[1024];
for(int readnum;(readnum = FIS.read(imagedata)) !=-1;){
array.write(imagedata,0,readnum);
}
image = array.toByteArray();
format = new ImageIcon(array.toByteArray());
Image img = format.getImage().getScaledInstance(lbpicture.getWidth(),lbpicture.getHeight(),Image.SCALE_SMOOTH);
ImageIcon imgicon=new ImageIcon(img);
lbpicture.setIcon(imgicon);
}catch(Exception e){
e.printStackTrace();
}
最好的方法是什么?
先感谢您。
解决方案
我认为您应该从类路径中获取图像:
...
try{
ClassLoader cl = Thread.currentThread().getContextClassLoader();
Image image = ImageIO.read(cl.getResource("/Image/24/employeebg.png"));
Image img = image.getScaledInstance(lbpicture.getWidth(),lbpicture.getHeight(),Image.SCALE_SMOOTH);
ImageIcon imgicon=new ImageIcon(img);
lbpicture.setIcon(imgicon);
}catch(Exception e){
e.printStackTrace();
}
...
更新
要将资源添加到您的 netbeans 项目,请在项目的根目录中创建一个目录“resources”;然后将其添加为源包文件夹,如下所示:
- 在项目资源管理器中右键单击您的项目,在下拉菜单中选择“属性”,
- 在“源”类别中,单击“源包文件夹”列表右侧的“添加文件夹...”按钮,然后选择刚刚创建的“资源”文件夹,
- 点击“确定”,
- 将文件夹“Image”移动到“resources”文件夹中。
推荐阅读
- python-3.x - 安装 psycopg2 后无法正确导入
- c++ - 传递参数时如何修复主函数调用不正确的函数?(c++)
- angular - UI 表已损坏
- ansible - Ansible 更新 authorized_keys 文件
- laravel - Laravel Eloquent 连接多表
- php - 数组中未定义的索引,但它在那里
- scala - 如何检测空的 Akka 源
- python-3.x - 使用 numpy.npv 函数的输出向数据框中添加一列
- google-slides-api - 如何使用 Google Slides API 插入矢量图像?
- javascript - 代码执行后如何重置 javascript '.one' 函数?