将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