首页 > 解决方案 > 如何将图像从项目目录检索到 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();
    }

最好的方法是什么?

先感谢您。

标签: java

解决方案


我认为您应该从类路径中获取图像:

...

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”文件夹中。

推荐阅读