2014-05-01 5 views
1

CSS의 DIV에 배경 이미지를 적용하는 것처럼 JPanel의 전체 너비에 걸쳐 반복되는 이미지를 설정하고 싶습니다. JPanel의 스윙에서 어떻게 구해야합니까? 재미있는 부분은반복 배경 이미지를 JPanel로 설정하는 방법은 무엇입니까?

for (y = 0 to containerHeight) do 
    for (x = 0 to containerWidth) do 
     drawImage(tile, x, y) 

을 알고있다,

전체 프로세스가 간단 상대는 ...

+0

당신 고통 받아야 해. 그게 ... – MadProgrammer

+0

@MadProgrammer 제발 보여 주실 수 있습니다. –

답변

4

스윙 상자에서이 기능을 제공하지 않습니다, 그래서 당신은 스스로를 수행해야합니다 그것을 적용하는 방법과 방법. 에서보세요 : 당신이 알아야 할 여러 부분에 대한 자세한 내용은

.

예 그래서 타일로 이것을 사용

...이를 생산할 수 있었다

Tile

...

tiled

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.imageio.ImageIO; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class PaintTitle { 

    public static void main(String[] args) { 
     new PaintTitle(); 
    } 

    public PaintTitle() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new TestPane()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class TestPane extends JPanel { 

     private BufferedImage tile; 

     public TestPane() { 
      try { 
       tile = ImageIO.read(getClass().getResource("/tile.jpg")); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 

     @Override 
     public Dimension getPreferredSize() { 
      return new Dimension(200, 200); 
     } 

     @Override 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      Graphics2D g2d = (Graphics2D) g.create(); 
      int tileWidth = tile.getWidth(); 
      int tileHeight = tile.getHeight(); 
      for (int y = 0; y < getHeight(); y += tileHeight) { 
       for (int x = 0; x < getWidth(); x += tileWidth) { 
        g2d.drawImage(tile, x, y, this); 
       } 
      } 
      g2d.dispose(); 
     } 
    } 

} 
+0

고마워요 @MadProgrammer –

관련 문제