簡體   English   中英

如何自動更改Jlabel

[英]How to change automatically a Jlabel

嗨,我正在嘗試創建一個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()])更改標簽圖標。 您可以在Timer偵聽器中執行此操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM