java - 基于 if/else 语句和 Action 监听器在 Java 中绘制形状

标签 java swing actionlistener draw paintcomponent

我试图弄清楚是否有任何方法可以根据 if/else 语句或通过使用 ActionListener

我不想发布完整的问题,因为这是为了作业,而是为了我自己的场景:

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

我知道我可以使用 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 组件构建 View 并使用操作监听器构建 Controller 之前执行此操作。

关于java - 基于 if/else 语句和 Action 监听器在 Java 中绘制形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60067108/

相关文章:

Java Swing 使用另一个文件中的组件打开一个新按钮

java - 如何在设置约束的情况下将按钮的背景设置为随机颜色?

java - 编译器不识别 Action 监听器类中的参数

java - 如何使用 ActionListener 在鼠标释放/鼠标松开时执行操作?

java - Java多线程中应该使用什么数据结构?

java - 什么时候需要在方法签名中使用 "throws"?

java - 为什么 JApplet 显示空白灰屏?

java - Sinthatica 与 JFrame 调整大小

java - addactionlistener 的问题

java - 在 Java 中检测 HTTP 中断