java循环在JFrame中显示图像

java循环在JFrame中显示图像,java,swing,Java,Swing,你好,我正在尝试让一个图像充满屏幕。图像为20x20像素。我真的不知道该怎么解释。我想代码可能会解释得更好谢谢你的帮助。屏幕为800x600像素。我找了几天,什么也没找到。我想让它用这张图片填满整个屏幕。我就是拿不到它,要填满它,我需要它重复,而不是只用一个正方形 private int GLW = 0; private int GLH = 0; private int add = 20; private int redo1 = 0

你好,我正在尝试让一个图像充满屏幕。图像为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;
    }
private int GLW=0;
私有整数GLH=0;
私人整数相加=20;
私有int redo1=0;
而(redo1<24000){
int-redo=0;
如果(重做<1){
//图像在这里
java.net.URL imageURL=getClass().getResource(“grass.png”);
img=newjlabel(newimageicon(imageURL));
JPanel pan1=新的JPanel();
pan1.添加(img);
添加(img,BorderLayout.CENTER);
img.setVisible(真);
img.挫折(GLH、GLW、20、20);
GLW=GLW+相加;
GLH=GLH+add;
}
GLW=GLW+20;
}
我正试图让一个图像填满屏幕。图像为20x20像素

然后需要平铺图像

查看允许您将图像添加到面板并支持平铺的功能。基本准则是:

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

您需要创建一个扩展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);
            }
        }
    }
}

不,实际上,代码没有解释太多。你希望它做什么,它做什么你不喜欢?编辑您的问题,我建议在您提问时添加
java
标记。
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);
            }
        });
    }
}