2010-01-31 42 views
1

如何在Java中繪製一個填充的正方形框,該正方形框完全位於applet窗口的中心?當調整窗口大小時,它在applet窗口內水平和垂直居中?我希望它適應屏幕的垂直高度,但保持方形,即使是水平寬度的邊緣。如果窗戶的大小太窄,那邊可能會切斷?如何在Java中繪製一個填充正方形框,該框完全位於applet窗口的中心?

+0

這是偶然的作業嗎? – 2010-01-31 19:50:56

+0

您是否正在尋找自己編寫代碼的代碼,或者您在尋找佈局管理器來保持組件的中心位置?此外,你是什麼意思「保持平方,甚至水平寬度的邊緣」?你是說你想讓它保持最小尺寸? – aperkins 2010-01-31 19:51:18

+0

是的,這是我的任務的最後一部分,我已經騎了兩天,然後決定必須拋出毛巾。這是一個我一直在使用fillRect編寫的繪圖代碼本身。但問題是當我試圖集中它時 fillRect(寬* 5/10,高* 5/10,寬/ 10/2,高/ 10/2); 它居中,但只有左上角(x,y線)居中,而不是圖像中間。對不起,我的意思是保持方形,即使水平寬度發生變化 - >就好像它被調整爲一個非常狹窄的矩形,然後它會被裁剪成矩形 – Tom 2010-01-31 20:04:26

回答

1

下面是一個面板的例子,它可以在中間形成一個30px的正方形,或者調整面板的大小。也許它可以給你足夠的進步。

private class MyPanel extends JPanel{ 
    int height = 30;//30 pixels high. 
    int width = 30;//30 pixels wide. 
    boolean resize = true; 


    @Override 
    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     int verticalCenter = this.getHeight()/2; 
     int horizontalCenter = this.getWidth()/2; 

     if(!resize){ 
     int topLeftSquareCornerY = verticalCenter - (height/2); 
     int topLeftSquareCornerX = horizontalCenter - (width/2); 

     g.setColor(Color.BLUE); 
     g.drawRect(topLeftSquareCornerX, topLeftSquareCornerY, width, height); 
     }else{ 
     g.setColor(Color.GREEN); 
     g.drawRect(15,15,(this.getWidth()-30), this.getHeight()-30); 
     } 
    } 
    } 
+0

非常感謝您的幫助...我已經部分理解了,因爲我在代碼中發現了錯誤計算。但感謝您的幫助。你們是非常有幫助的。 :) – Tom 2010-02-01 00:57:13

1

聽起來像你的基本問題是搞清楚如何正確地放置給定的矩形。您需要在矩形的中間中的屏幕的中間

從矩形中間到邊的距離分別是高度和長度的一半。

所以x1,x2 = middle_x±width/2,y1,y2 = middle_y±height/2。

1

我猜你想繪製一個固定的size的方塊,在面板調整大小時,它停留在面板的center。解決這些問題的一種方法是從頭開始並向後推進。你知道約fillRect(),所以寫下你需要「填補空白」的方法所需的。撥打center座標xy。上角將爲size的一半,左邊的角落爲左邊的size的一半;方形的寬度和高度將只是size

g.fillRect(left,  top,  width, height); 
g.fillRect(x - size/2, y - size/2, size, size); 

現在回去弄清楚,xy分別一半面板的寬度和高度,:

int x = getWidth()/2; 
int y = getHeight()/2; 

現在把它放在一起的你的paintComponent()方法。

相關問題