將Graphics2D對象的BasicStroke更改爲除1之外的任何內容會導致它在啓動時不在JPanel的中心繪製某些內容。BasicStroke導致偏離中心
這是在JFrame上的JPanel。這是我的項目的基本想法,但並不是全部。
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
if(this.centered){
this.myShape.setCenterX(this.getWidth()/2);
this.myShape.setCenterY(this.getHeight()/2);
}
g2.setStroke(new BasicStroke(3)); //new BasicStroke(1) works fine
g2.draw(this.myShape);
}
當您單擊並拖動myShape時,myShape將立即跳轉到中心。但是,當我最初編譯並運行它時,如果stroke不是1,那麼paintComponent()會將它繪製在屏幕中心上方約1釐米的位置。
我是如何對錯的?我定義了MyShape類,因此可能會出現錯誤。也許中心和繪圖點之間的距離是JPanel和JFrame頂部之間的距離?我如何解決它?
編輯:在這裏我想它添加圖片
http://s21.postimage.org/dfpmz73et/Untitled_1.png 第一個形狀是正確的。另外兩個在我想要的位置上方。但是無論中風的大小如何,中心的位移都是相同的。
爲更好地提供幫助,請包括[sscce](http://www.sscce.org) – mre 2013-03-17 19:21:01