Java 如何自动更改Jlabel

Java 如何自动更改Jlabel,java,swing,timer,Java,Swing,Timer,嗨,我正在尝试创建一个Java桌面应用程序,在这里我可以每5秒自动移动一次图像。我能做到这一点。问题是我想使用我自己的图像,我想把所有的图像放在一个Jlabel上。我做了以下代码 我怎么能得到这个 private static class ImagePanel extends JPanel { URL[] urls; ImageIcon[] image; BufferedImage[] images; Random rand =

嗨,我正在尝试创建一个Java桌面应用程序,在这里我可以每5秒自动移动一次图像。我能做到这一点。问题是我想使用我自己的图像,我想把所有的图像放在一个Jlabel上。我做了以下代码

我怎么能得到这个

private static class ImagePanel extends JPanel {

        URL[] urls;
        ImageIcon[] image;
        BufferedImage[] images;
        Random rand = new Random();
        JLabel imagelabel;

        public ImagePanel() {
            urls = new URL[4];

            try {


               urls[0] = new URL("http://i.stack.imgur.com/NCsHu.png");
               urls[1] = new URL("http://i.stack.imgur.com/UvHN4.png");
               urls[2] = new URL("http://i.stack.imgur.com/s89ON.png");
               urls[3] = new URL("http://i.stack.imgur.com/QEK2o.png");


               images = new BufferedImage[5];
               images[0] = ImageIO.read(urls[0]);
               images[1] = ImageIO.read(urls[1]);
               images[2] = ImageIO.read(urls[2]);
               images[3] = ImageIO.read(urls[3]);

            } catch (MalformedURLException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }

            setBackground(Color.BLACK);

            Timer timer = new Timer(5000, new ActionListener(){
                @Override
                public void actionPerformed(ActionEvent e) {
                    repaint();
                }
            });
            timer.start();
        }

        private int random() {
            int index = rand.nextInt(4);
            return index;
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            BufferedImage img = images[random()];
            g.drawImage(img, 0, 0, 400, 400, 0, 0,
                    img.getWidth(), img.getHeight(), this);
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(400, 400);
        }
    }
}
提前谢谢

“但这个问题我想使用我自己的图像,我想把所有图像放在一个jlabel上。”

该程序似乎正在处理web URL。所以我想你的问题只是如何使用你自己的文件图像

您应该做的是将图像放在项目中的一个包中,如

ProjectRoot
         src
            resources
                   image1.png
                   image2.png
然后,您可以将
URL
替换为如下内容

//urls[0] = new URL("http://i.stack.imgur.com/NCsHu.png");
urls[0] = ImagePanel.class.getResource("/resources/image1.png");
urls[1] = ImagePanel.class.getResource("/resources/image2.png");
有关如何使用嵌入式资源的更多信息,请参见wiki信息中的更多信息


此代码看起来;-)


编辑

根据您的问题标题和有关
JLabel
的问题,代码实际上没有使用
JLabel
。它描绘了图像。如果您确实想使用
JLabel
,那么您可以使用
imageLabel.setIcon(images[randon()])
来更改标签图标。您可以在
计时器
侦听器中执行此操作

“但这个问题我想使用我自己的图像,我想把所有图像放在一个jlabel上。”

该程序似乎正在处理web URL。所以我想你的问题只是如何使用你自己的文件图像

您应该做的是将图像放在项目中的一个包中,如

ProjectRoot
         src
            resources
                   image1.png
                   image2.png
然后,您可以将
URL
替换为如下内容

//urls[0] = new URL("http://i.stack.imgur.com/NCsHu.png");
urls[0] = ImagePanel.class.getResource("/resources/image1.png");
urls[1] = ImagePanel.class.getResource("/resources/image2.png");
有关如何使用嵌入式资源的更多信息,请参见wiki信息中的更多信息


此代码看起来;-)


编辑

根据您的问题标题和有关
JLabel
的问题,代码实际上没有使用
JLabel
。它描绘了图像。如果您确实想使用
JLabel
,那么您可以使用
imageLabel.setIcon(images[randon()])
来更改标签图标。您可以在
计时器
侦听器中执行此操作

“但这个问题我想使用我自己的图像,我想把所有图像放在一个jlabel上。”

该程序似乎正在处理web URL。所以我想你的问题只是如何使用你自己的文件图像

您应该做的是将图像放在项目中的一个包中,如

ProjectRoot
         src
            resources
                   image1.png
                   image2.png
然后,您可以将
URL
替换为如下内容

//urls[0] = new URL("http://i.stack.imgur.com/NCsHu.png");
urls[0] = ImagePanel.class.getResource("/resources/image1.png");
urls[1] = ImagePanel.class.getResource("/resources/image2.png");
有关如何使用嵌入式资源的更多信息,请参见wiki信息中的更多信息


此代码看起来;-)


编辑

根据您的问题标题和有关
JLabel
的问题,代码实际上没有使用
JLabel
。它描绘了图像。如果您确实想使用
JLabel
,那么您可以使用
imageLabel.setIcon(images[randon()])
来更改标签图标。您可以在
计时器
侦听器中执行此操作

“但这个问题我想使用我自己的图像,我想把所有图像放在一个jlabel上。”

该程序似乎正在处理web URL。所以我想你的问题只是如何使用你自己的文件图像

您应该做的是将图像放在项目中的一个包中,如

ProjectRoot
         src
            resources
                   image1.png
                   image2.png
然后,您可以将
URL
替换为如下内容

//urls[0] = new URL("http://i.stack.imgur.com/NCsHu.png");
urls[0] = ImagePanel.class.getResource("/resources/image1.png");
urls[1] = ImagePanel.class.getResource("/resources/image2.png");
有关如何使用嵌入式资源的更多信息,请参见wiki信息中的更多信息


此代码看起来;-)


编辑

根据您的问题标题和有关
JLabel
的问题,代码实际上没有使用
JLabel
。它描绘了图像。如果您确实想使用
JLabel
,那么您可以使用
imageLabel.setIcon(images[randon()])
来更改标签图标。您可以在
计时器
侦听器中执行此操作