绘图:以不同大小为中心的对象

时间:2014-05-17 18:36:32

标签: java swing graphics2d

该程序在jPanel上绘制两个输入大小的圆圈,一个在另一个上面。问题是,两个圆圈不居中。我该如何解决这个问题?

代码:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {  

jPanel.Repaint();
try{
    jLabel6.setText("");
    int a=Integer.parseInt(jTextField1.getText()); 

    Graphics2D gfx=(Graphics2D)jPanel1.getGraphics();
    gfx.clearRect(0, 0, getWidth(), getHeight()); 

    gfx.setColor(Color.red);
    gfx.fillOval(100,50,a,a);
    gfx.fillOval(100,50,a,a);

}catch(NumberFormatException e){
    jLabel6.setText("Incorrect data");
}
}

结果:
enter image description here

2 个答案:

答案 0 :(得分:3)

  

问题是,两个圆圈没有居中。

您必须了解x,y坐标如何在Swing自定义绘图中工作以定位组件。

尝试了解下面的屏幕截图。

enter image description here


在原始width / 2中添加x,以根据椭圆的宽度获取居中的x坐标。

同样适用于身高。

示例代码:

    int x = 50;
    int y = 50;
    int size = 100;

    g.setColor(Color.red);
    g.fillOval(x, y, size, size);

    int center = x + size / 2;
    size = 70;
    g.setColor(Color.blue);
    g.fillOval(center - size / 2, center - size / 2, size, size);

enter image description here

答案 1 :(得分:0)

解决:

我使用了gfx.fillOval(400-(a/2),50-(a/2),a,a);,并调整了x,y坐标,以便在所需位置生成圆圈。