2011-10-23 50 views
0

我有點麻煩,使得這個網格從頂部10個像素和從左邊10個像素繪製。柵格被抽出屏幕

我可以通過增加this.getY()+ 10到一個更高的數字來做到這一點,只是想知道爲什麼要刪除+10它被抽出屏幕。

忽略的變量名和任何格式我只是把這個一起

package griddrawing; 

import java.awt.*; 
import javax.swing.*; 

public class Grid extends JFrame 
{ 

    private int TILEWIDTH; 
    private int TILEHEIGHT; 
    private int COLS; 
    private int ROWS; 
    private int defaultX; 
    private int defaultY; 
    private int currentX; 
    private int currentY; 

    public Grid() 
    { 
     setSize(800,400); 
     TILEWIDTH = 30; 
     TILEHEIGHT = 30; 
     COLS = 10; 
     ROWS = 10; 
     defaultX = this.getX() + 10; 
     defaultY = this.getY() + 10; 
     currentX = 0; 
     currentY = 0; 
    } 

    @Override 
    public void paint(Graphics g) 
    { 
     super.paint(g); 

     currentX = defaultX; 
     currentY = defaultY; 

     g.setColor(Color.black); 

     for(int i = 0; i < COLS; i++) 
     { 
      for(int k = 0 ; k < ROWS; k++) 
      { 
       g.drawRect(currentX - (TILEWIDTH/2), currentY - (TILEHEIGHT/2), TILEWIDTH, TILEHEIGHT); 
       g.drawString("" + k, currentX, currentY); 
       currentY += TILEWIDTH; 
       System.out.println("COL: " + i + " ROW: " + k + " Current X: " + currentX + " Current Y: " + currentY); 
      } 
      currentY = defaultY; 
      currentX += TILEHEIGHT; 
     } 
    } 
} 
+2

*「忽略變量名稱和任何格式我把它們放在一起」*鑑於閱讀示例需要時間,如果不遵循常規慣例需要更長的時間來理解它們,那就像說*「我的時間比那些試圖幫助我的人更有價值「*。我常見的答案是:「當然我會忽略它,我只會**忽略整個問題**。」* –

+0

它們很容易理解變量名稱,只是有些在首都時不應該是 –

回答

3
  1. 不要設置框的大小。
  2. 請勿直接在框架上塗漆。

代替兩者:

  1. 覆蓋一個JComponentJPanelpaintComponent(Graphics)方法。
  2. 要麼致電theComponent.setPreferredSize(Dimension)要麼覆蓋相同的方法。
  3. 將自定義組件添加到框架並呼叫pack()

那運氣應該意味着你不再需要考慮任何偏移量(可能通過平臺或PLAF改變)。

+0

哈哈。 。不是你的'普通答案'的日子(忽略) kleopatra