在Java中相邻绘制矩形

在Java中相邻绘制矩形,java,swing,graphics,draw,Java,Swing,Graphics,Draw,我正在学习用Java编写代码。我需要做一个评估:我必须创建一个java应用程序,该应用程序将执行以下操作: 允许用户指定输入矩形的数量(3到30之间) 生成所需数量的输入矩形(具有随机宽度和高度),并将其写入文件(人类可读) 从上述步骤中生成的文件中读取随机生成的输入矩形 以图形方式显示输入矩形,正确地排列在彼此旁边 计算输出矩形 以图形方式显示输出矩形,并将其正确放置在彼此旁边。注意:输入和输出矩形必须同时显示 将输出矩形坐标写入输出文件(人类可读)。” 这些矩形是简单的方框(不是花哨的颜

我正在学习用Java编写代码。我需要做一个评估:我必须创建一个java应用程序,该应用程序将执行以下操作:

  • 允许用户指定输入矩形的数量(3到30之间)

  • 生成所需数量的输入矩形(具有随机宽度和高度),并将其写入文件(人类可读)

  • 从上述步骤中生成的文件中读取随机生成的输入矩形

  • 以图形方式显示输入矩形,正确地排列在彼此旁边

  • 计算输出矩形

  • 以图形方式显示输出矩形,并将其正确放置在彼此旁边。注意:输入和输出矩形必须同时显示

  • 将输出矩形坐标写入输出文件(人类可读)。”

这些矩形是简单的方框(不是花哨的颜色等等)。我一直在努力编写这段代码,设法完成输入+错误处理,它显示矩形,但没有达到预期效果

错误:我需要它接受用户提供的矩形数量,并将它们彼此相邻显示

请在下面找到我的代码…提前谢谢。 磅


导入java.awt.Graphics;
导入javax.swing.JFrame;
导入java.util.Random;
导入java.util.Scanner;
公共类final_rect扩展JFrame
{
公开决赛
{
片名(“教程”);
设置大小(700500);
setVisible(真);
setDefaultCloseOperation(关闭时退出);
}
公共空间涂料(图g)
{
int x=50;
int y=50;
随机rnd=新随机();
对于(inti=1;i简单方式:

您可以创建一个起始位置x和y(如0,0),并不断将宽度添加到x和/或高度添加到y,然后在下一个要绘制的重角上使用它们,而不是固定起始位置(这将使它们彼此位于内部)

哦,为了确保您知道:
drawRect(int-startX,int-startY,int-width,int-height)
简单方法:

您可以创建一个起始位置x和y(如0,0),并不断将宽度添加到x和/或高度添加到y,然后在下一个要绘制的重角上使用它们,而不是固定起始位置(这将使它们彼此位于内部)


哦,只是为了确保您知道:
drawRect(int-startX,int-startY,int-width,int-height)
您正在将它们绘制在彼此的顶部。这一行:

g.drawRect(205,300,height,width);
从点(205300)开始绘制所有矩形

您必须更改前两个参数的值(可能只有其中一个)。我不会给出确切的代码,因为这是家庭作业,但是:

您有一个起始位置,称之为(205300),就像在代码中一样,在绘制矩形时,您有每个矩形的宽度,有了这些信息,您应该能够确定下一个位置是什么


另一件事是,您正在创建一个新的
随机
对象。在循环中,您应该只在方法顶部创建一个对象(或在构造函数时为整个类创建一个对象)。

您正在将它们绘制在彼此的顶部。此行:

g.drawRect(205,300,height,width);
从点(205300)开始绘制所有矩形

您必须更改前两个参数的值(可能只有其中一个)。我不会给出确切的代码,因为这是家庭作业,但是:

您有一个起始位置,称之为(205300),就像在代码中一样,在绘制矩形时,您有每个矩形的宽度,有了这些信息,您应该能够确定下一个位置是什么


另一件事是,您正在创建一个新的
随机
对象。通过循环,您应该只在方法顶部创建一个对象(或在构造函数时为整个类创建一个对象)。

谢谢大家,@Montolide,我已经尝试过了,g.drawRect(205+width,300,height,width);某些矩形。仍然重叠。因为我使用了随机W/H。现在正在玩代码。矩形也被画成指向下的,就像它附着在天花板上并向下。我需要它在地面上长大。我尝试使用0轴,但仍然有问题。有什么建议吗?另一件事是我需要p接受用户输入以绘制矩形数量的程序。目前,在我的代码中,我使用了“iThanks Guys,@Montolide,我已经尝试过了,g.drawRect(205+width,300,height,width);某些矩形。仍然重叠。因为我使用了随机W/H。现在正在玩代码。矩形也被画成指向下的,就像它附着在天花板上并向下。我需要它在地面上长大。我尝试使用0轴,但仍然有问题。有什么建议吗?另一件事是我需要p接受用户输入以绘制矩形数量的程序。目前,在我的代码中,我使用了“iThank u Montolide”,我已经尝试过了,g.drawRect(205+width,300,height,width);某些矩形。仍然重叠。因为我使用了随机W/H。现在正在玩代码。矩形也被画成指向下,就像它附着在天花板上并向下。我需要它在地面上长大。我尝试使用0轴,但仍然有问题。有什么建议吗?另一件事是我需要程序ram以接受用户的输入来绘制矩形的数量。目前在我的代码中,我使用的是
(0,0)
位置是JFrame的左上角点,因此您需要从JFrame的高度减去矩形高度再到JFrame的高度(JFrame的底部)。
getHeight()
将对您有所帮助。关于(205+宽度),您将丢失绘制的每个重角的最后位置,请尝试使用变量保持此值。变量编号也一样,请尝试使其可以绘制