2014-12-13 2 views
0

Привет, я пытаюсь сделать изображение заполняющим экран. Изображение 20x20 пикселей. Я не знаю, как это объяснить. Я думаю, что код может объяснить это лучше, спасибо за вашу помощь. и экран имеет разрешение 800x600 пикселей. Я искал несколько дней и ничего не нашел. Я хочу, чтобы он заполнил весь экран этим изображением, я просто не могу его получить, и чтобы заполнить его, мне нужно его повторить, а не просто использовать один квадрат.java loop, отображающий изображение в JFrame

 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; 
    } 
+0

Нет, на самом деле, код не объясняет. Что вы хотите сделать, и что он делает, что вам не нравится? Измените свой вопрос, и я предлагаю добавить тег 'java', пока вы на нем. – RealSkeptic

ответ

2

я пытаюсь сделать изображение на весь экран. Изображение 20x20 пикселей

Затем вам нужно сшить изображение.

Отъезд Background Panel, который позволяет добавлять изображение на панель и поддерживать черепицу. Основной код будет:

BackgroundPanel panel = new BackgroundPanel(image, BackgroundPanel.TILED); 
frame.add(panel); 
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); 
      } 
     }); 
    } 
} 
Смежные вопросы