java循环在JFrame中显示图像

时间:2014-12-13 19:55:52

标签: java swing

您好,我试图让图片填满屏幕。图像为20x20像素。我真的不知道如何解释它。我认为代码可能会更好地解释它,谢谢你的帮助。屏幕为800x600像素。我已经找了好几天,什么都没找到。我希望它用这个图像填满整个屏幕我只是不能得到它并填充它我需要它重复而不只是使用一个正方形。

        private int GLW = 0;
        private int GLH = 0;
        private int add = 20;
        private int redo1 = 0;

        while(redo1 < 24000){
        int redo = 0;
        if(redo < 1){

            //image here
            java.net.URL imageURL = getClass().getResource("grass.png");
            img = new JLabel(new ImageIcon(imageURL));
            JPanel pan1 = new JPanel();
            pan1.add(img);
            add(img, BorderLayout.CENTER);
            img.setVisible(true);
            img.setBounds(GLH,GLW,20 ,20 );

            GLW = GLW + add;
            GLH = GLH + add;

        }
        GLW=GLW+20;
    }

2 个答案:

答案 0 :(得分:2)

  

我试图让图像填满屏幕。图像为20x20像素

然后你需要平铺图像。

查看Background Panel,它允许您将图像添加到面板并支持平铺。基本代码是:

BackgroundPanel panel = new BackgroundPanel(image, BackgroundPanel.TILED);
frame.add( panel );

答案 1 :(得分:0)

您需要创建一个扩展JPanel的自定义类,然后覆盖paintComponent方法。 这对我有用:

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JPanel;

public class BackgroundPanel extends JPanel {

    private Image backgroundImage;

    public BackgroundPanel(String fileName) {
        backgroundImage = Toolkit.getDefaultToolkit().createImage(fileName);
    }

    @Override
    public void paintComponent(Graphics g) {
        int width = this.getWidth();
        int height = this.getHeight();
        for(int y = 0; y < height; y += backgroundImage.getHeight(null)) {
            for(int x = 0; x < width; x += backgroundImage.getWidth(null)) {
                g.drawImage(backgroundImage,x,y,null);
            }
        }
    }
}

然后只需将此面板添加到您的框架而不是常规JPanel:

import java.awt.EventQueue;
import java.io.IOException;
import javax.swing.JFrame;

public class Main {

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame("Background Image Example");
                String imageUrl = "path/to/image.extension";

                BackgroundPanel panel = new BackgroundPanel(imageUrl);
                //add any other elements and customize panel
                frame.add(panel);
                //add any other elements and customize jframe

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}