我是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
答案 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计算中的宽度和高度,使其与宽度和高度变化的量成波形,使得图形保持居中。现在重新开始并尝试削减一些计算。