Java程序创建同心矩形和椭圆形?

时间:2016-09-23 15:46:47

标签: java swing

我是Java的新手,正致力于创建一系列同心矩形和椭圆形的程序。我希望用户能够输入自己的高度和宽度,并且图形将自动与JPanel(我已经完成)成比例并保持居中,同时沿着JPanel左对角线的线。 (我遇到的问题)。

到目前为止,这是我的代码:

for (int i = 0; i < 5; i++){
    int height = 100;
    int width = 200;
    int x = (getWidth()-width)/2;
    int y = (getHeight()-height)/2;
    graphic.drawRect(x+i*(x/3),y+i*(y/6), width - i * (width/4),height - i * (height/4));
    graphic.drawOval(x+i*(x/3),y+i*(y/6), width - i * (width/4),height - i * (height/4));
}

这给了我这个数字:

enter image description here

在我为至少这个案例工作之后,我会照顾用户输入。 任何帮助将不胜感激!

图片应如何显示: enter image description here

2 个答案:

答案 0 :(得分:0)

这是因为每次增加for循环计数器时,您都会递增并更改椭圆/矩形的中心。

graphic.drawRect(x+i*(x/3),y+i*(y/6), width - i * (width/4),height - i * (height/4));
graphic.drawOval(x+i*(x/3),y+i*(y/6), width - i * (width/4),height - i * (height/4));

应该变得像

graphic.drawRect(width / 2, height / 2, width - i * (width/4),height - i * (height/4));
graphic.drawOval(width / 2, height / 2, width - i * (width/4),height - i * (height/4));

另外,我之前没有注意到的第二个问题是这些行,

int x = (getWidth()-width)/2;
int y = (getHeight()-height)/2;

其中,如果我猜到了getWidth()和getHeight()正确做了什么,你总是将x和y设置为0,因为你说的是​​(宽度 - 宽度)/ 2。

答案 1 :(得分:0)

我实际上想出来了,编辑下面的getRect和getOval函数:

graphic.drawRect(x+(i*(width/8)),y+(i*(height/8)), width - i * (width/4),height - i * (height/4));
graphic.drawOval(x+(i*(width/8)),y+(i*(height/8)),width - i * (width/4),height - i * (height/4));

包括x和y计算中的宽度和高度,使其与宽度和高度变化的量成波形,使得图形保持居中。现在重新开始并尝试削减一些计算。