【问题标题】:Draw shapes in Java based off if/else statements and action listener基于 if/else 语句和动作监听器在 Java 中绘制形状
【发布时间】:2020-05-20 20:30:59
【问题描述】:

我试图弄清楚是否有任何方法可以根据 if/else 语句或使用 ActionListener 来绘制图像(drawRect()drawOval() 等)。

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

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

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

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

【问题讨论】:

  • 你可以让一个动作监听器更新你类中的一些状态,调用repaint(),然后让paintComponent根据状态的更新方式绘制一些东西。
  • 监听器通常会有对输入组件的引用(如果你用 lambda 定义它,这很简单),然后它会读出值并用 @ 向事件线程发送命令987654329@.

标签: java swing actionlistener draw paintcomponent


【解决方案1】:

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

简短的回答是肯定的。

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

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

直线和三角形的描述类似。圆有点不同,有一个中心点和一个半径。如您所见,仅通过这些简单的几何形状,我们就已经掌握了大量信息。

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

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

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 2020-12-22
    • 2015-10-19
    • 2015-02-12
    • 2022-08-16
    • 1970-01-01
    相关资源
    最近更新 更多