根据 if/else 语句和动作侦听器在 Java 中绘制形状

Draw shapes in Java based off if/else statements and action listener

我想弄清楚是否有任何方法可以根据 if/else 语句或使用 [=14] 来绘制图像(drawRect()drawOval() 等) =].

我不想 post 完整的问题,因为这是一个作业,但对于我自己的场景:

如果我在 JPanel 上有一个名为“draw rectangle”的按钮,并且我有来自用户输入的 x、y、宽度和高度,有什么方法可以将 actionListener 附加到“draw rectangle”,可以使用这些值(通过引用传递?)以某种方式绘制矩形。

我知道我可以使用 paintComponent,但我不能将其放入 ActionListener,它似乎是按照自己的意愿行事,而不是基于特定用户的操作。

我真的没有任何代码,因为我根本不知道该怎么做。

If I have a button on a JPanel named "draw rectangle" and I have the x, y, width, and height from user input, is there any way I can attach an actionListener to "draw rectangle" that could somehow draw the rectangle using those values (passed by reference?).

简短的回答是肯定的。

通常,您需要将矩形指令保存在模型中,并在按下任何形状按钮时JPanel重新绘制模型。

让我们以矩形为例。在 JPanel 上绘制矩形需要知道什么?您需要一个起点(左上)和一个终点(右下)。您可以使用 java.awt.Point 来保存起点和终点。您可以设置线条的粗细,以像素为单位。您可以使用 JColorChooser 设置矩形的颜色。您还可以将矩形设置为轮廓或填充所选颜色。

直线和三角形的描述类似。圆有点不同,它有一个圆心和一个半径。如您所见,我们已经有了很多信息可以跟踪这些简单的几何形状。

然后是绘图表面本身的问题。绘图表面可能比您的计算机屏幕可以显示的更大。您可以将绘图表面放在 JScrollPane.

必须确定所有这些事情,以便您可以构建应用程序模型。在使用 Swing 组件构建视图和使用动作侦听器构建控制器之前执行此操作。