Java 如何从项目文件夹中检索图像?

Java 如何从项目文件夹中检索图像?,java,swing,Java,Swing,我正在尝试制作一个Java桌面应用程序,其中我有一个JLabel,在那里我洗牌图像。我正在从电脑任何驱动器上的文件夹中检索图像。现在我想从项目文件夹中检索所有图像,该文件夹中有图像的文件夹名称 F:/>Kiosk | |___src | |___lib | |___koisk |

我正在尝试制作一个Java桌面应用程序,其中我有一个
JLabel
,在那里我洗牌图像。我正在从电脑任何驱动器上的文件夹中检索图像。现在我想从项目文件夹中检索所有图像,该文件夹中有图像的文件夹名称

 F:/>Kiosk
             |
             |___src
             |
             |___lib
             |
             |___koisk
                   |
                   |__main1.java
             |
             |__images
这是我的密码 我怎样才能做到这一点

public class ImageShuffle1 extends JPanel {

    private List<BufferedImage> list = new ArrayList<BufferedImage>();
    private List<BufferedImage> shuffled;
    private JLabel label = new JLabel();

    private int width = 700;
    private int height = 700;

    private Timer timer = new Timer(1000, new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            update();
        }
    });

    public ImageShuffle1() {

        try {
            list.add(resizeImage(ImageIO.read(new File("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\c.jpg"))));
            list.add(resizeImage(ImageIO.read(new File("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\d.jpg"))));
            list.add(resizeImage(ImageIO.read(new File("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\e.jpg"))));
            list.add(resizeImage(ImageIO.read(new File("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\f.jpg"))));
        } catch (IOException e) {
            e.printStackTrace();
        }

        shuffled = new ArrayList<BufferedImage>(list);
        Collections.shuffle(shuffled);
        timer.start();
    }

    private BufferedImage resizeImage(BufferedImage originalImage) throws IOException {
        BufferedImage resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = resizedImage.createGraphics();
        g.drawImage(originalImage, 0, 0, width, height, null);
        g.dispose();
        return resizedImage;
    }

    private void update() {
        if (shuffled.isEmpty()) {
            shuffled = new ArrayList<BufferedImage>(list);
            Collections.shuffle(shuffled);
        }

        BufferedImage icon = shuffled.remove(0);
        label.setIcon(new ImageIcon(icon));
    }

    private void display() {
        JFrame f = new JFrame("ImageShuffle");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.add(label);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new ImageShuffle1().display();
            }
        });
    }
}
公共类ImageShuffle1扩展了JPanel{
私有列表=新的ArrayList();
私人名单被洗牌;
专用JLabel标签=新JLabel();
私有整数宽度=700;
私人室内高度=700;
私有计时器=新计时器(1000,新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
更新();
}
});
公共映像shuffle1(){
试一试{
list.add(resizeImage(ImageIO.read)(新文件(“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\c.jpg”));
list.add(resizeImage(ImageIO.read)(新文件(“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\d.jpg”));
list.add(resizeImage(ImageIO.read)(新文件(“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\E.jpg”));
list.add(resizeImage(ImageIO.read)(新文件(“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\f.jpg”));
}捕获(IOE异常){
e、 printStackTrace();
}
shuffled=新数组列表(列表);
收藏。洗牌(洗牌);
timer.start();
}
私有BuffereImage resizeImage(BuffereImage originalImage)引发IOException{
BuffereImage resizedImage=新的BuffereImage(宽度、高度、BuffereImage.TYPE_INT_ARGB);
Graphics2D g=resizedImage.createGraphics();
g、 drawImage(原始图像,0,0,宽度,高度,空);
g、 处置();
返回resizedImage;
}
私有void更新(){
if(shuffled.isEmpty()){
shuffled=新数组列表(列表);
收藏。洗牌(洗牌);
}
BuffereImage图标=已洗牌。移除(0);
label.setIcon(新图像图标(图标));
}
专用void display(){
JFrame f=新JFrame(“ImageShuffle”);
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f、 加上(这个);
f、 添加(标签);
f、 包装();
f、 setLocationRelativeTo(空);
f、 setVisible(真);
}
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
新建ImageShuffle1().display();
}
});
}
}

提前感谢

将项目中的所有图像放在与
src
文件夹平行的
images
文件夹中

 F:/>Kiosk
             |
             |___src
             |
             |___lib
             |
             |___koisk
                   |
                   |__main1.java
             |
             |__images
                |
                |__c.jpg
                |__d.jpg
                |__e.jpg
                |__f.jpg
使用此代码

list.add(resizeImage(ImageIO.read(new File("images\\c.jpg"))));
list.add(resizeImage(ImageIO.read(new File("images\\d.jpg"))));
list.add(resizeImage(ImageIO.read(new File("images\\e.jpg"))));
list.add(resizeImage(ImageIO.read(new File("images\\f.jpg"))));

--编辑--

你可以试试任何一种

// Read from same package 
list.add(resizeImage(ImageIO.read(getClass().getResourceAsStream("c.png"))));

// Read from absolute path
list.add(resizeImage(ImageIO.read(new File("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\c.png"))));

// Read from images folder parallel to src in your project
list.add(resizeImage(ImageIO.read(new File("images\\c.jpg"))));

对所有四个图像重复任何一个。

将所有图像放在项目中与
src
文件夹平行的
images
文件夹中

 F:/>Kiosk
             |
             |___src
             |
             |___lib
             |
             |___koisk
                   |
                   |__main1.java
             |
             |__images
                |
                |__c.jpg
                |__d.jpg
                |__e.jpg
                |__f.jpg
使用此代码

list.add(resizeImage(ImageIO.read(new File("images\\c.jpg"))));
list.add(resizeImage(ImageIO.read(new File("images\\d.jpg"))));
list.add(resizeImage(ImageIO.read(new File("images\\e.jpg"))));
list.add(resizeImage(ImageIO.read(new File("images\\f.jpg"))));

--编辑--

你可以试试任何一种

// Read from same package 
list.add(resizeImage(ImageIO.read(getClass().getResourceAsStream("c.png"))));

// Read from absolute path
list.add(resizeImage(ImageIO.read(new File("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\c.png"))));

// Read from images folder parallel to src in your project
list.add(resizeImage(ImageIO.read(new File("images\\c.jpg"))));

对所有四个映像重复任何一个。

编程时,您必须考虑应用程序在最终用户机器上安装后的工作方式。最终用户将不会拥有您的项目文件夹。您打算如何发布您的应用程序?此外,如果您甚至没有将java文件放入src,您会将什么放入其中?另请参见。编程时,您必须考虑应用程序在最终用户机器上安装后的工作方式。最终用户将不会拥有您的项目文件夹。您打算如何发布您的应用程序?另外,如果您甚至没有将java文件放在src中,您会放在那里什么?另请参见。这是怎么可能的?尝试我在帖子中更新的其他选项。对所有四张图片重复任何一个选项。阅读内联评论了解有关图像位置的更多信息。阅读Struts in Action我不明白你的意思,我可以让你的emailidStruts生效。在谷歌上查找。下载PDF或买本书。怎么可能?尝试我在帖子中更新的其他选项。对所有四张图片重复任何一个选项。阅读内联评论了解有关图像位置的更多信息。阅读Struts in Action我不明白你的意思,我可以让你的emailidStruts生效。在谷歌上查找。下载PDF或购买一本书。