2011-08-27 74 views
3

我正在寫一個基於平鋪的平臺遊戲。目前,我正試圖讓400塊瓷磚一次顯示。這是我的小組。在頂部和左側,一切都很好,但在右側和底部,圖像被幾個像素剪掉。每個圖像是32 * 32。所有的blocks都被初始化。無爲空。這裏有什麼問題?使用Swing切斷圖像

public class Pane extends JPanel implements ActionListener{ 

    private static final long serialVersionUID = 1L; 
    Timer timer; 
    boolean setup = false; 
    Block[][] blocks; 
    Level level; 
    public Pane() 
    { 
     level = new Level(); 
     level.Generate(); 
     blocks = level.Parse(); 
     setBackground(Color.WHITE); 
     timer = new Timer(25, this); 
     timer.start(); 
    } 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2d = (Graphics2D)g; 
     for(Block[] b : blocks) 
     { 
      for(Block bx : b) 
      { 
       // Debug code if(bx.letter.equals("D")) 
       // Debug codeSystem.out.println(bx.y*32 +" = "+ bx.x*32); 
       g2d.drawImage(bx.bpic, bx.x*32, bx.y*32, this); 
      } 
     } 
     Toolkit.getDefaultToolkit().sync(); 
     g.dispose(); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     repaint(); 
    } 
} 

回答

5
在右側和底部兩側的圖像被切斷

幾個像素

如果你指的是正確的,整個面板的下側(不是單一的瓷磚)比它可能是一個LayoutManager相關的問題。解決方案取決於您用於將JPanel添加到的組件的佈局管理器。

你可以嘗試指定用最小/首選的JPanel的大小:

Pane pane = new Pane(); 
pane.setPreferredSize(...); 
pane.setMinimumSize(...); 

爲了指定相應的最小尺寸所產生的圖像的大小(32 * COL,32 * ROW) 。 不幸的是,setPreferredSize調用的有效性取決於Pane父組件的佈局管理器。

+0

我的窗格填滿了窗口(640 * 640)圖像在窗口的側面和底部被切掉。 – jbills

+0

@jbills:您的窗格是直接添加到框架還是容器組件? – Heisenbug

+0

直接我想。添加(新窗格());在我的框架構造函數 – jbills