【问题标题】:Java - Draw Square Around CircleJava - 在圆周围画正方形
【发布时间】:2012-11-22 00:47:28
【问题描述】:

我有一个包含五个按钮的程序:

i) 正方形 ii) 矩形 iii) 圆形 iv) 三角形 v) 透明

单击前四个按钮中的任何一个都会使用以下代码在绘图画布上绘制相应的形状:

可以拖动形状。它们也应该调整大小。我只是想在形状的四个边缘(NW、NE、SW、SE)周围更改鼠标光标。这适用于正方形和矩形,因为它们有四个边。但是,我在实现圆形和三角形时遇到了一些问题。

这就是我在 mouseClicked 事件中所做的:

我想要做的是,如果字符串 shape_type 包含圆形,例如,它会在其周围绘制一个边框,以便用户可以看到形状的边界。

但是,我不能只在 if 语句中使用以下代码:

请问我怎样才能画出边框?谢谢:)

【问题讨论】:

  • 你为什么使用paint(..) 你应该使用JPanel 并覆盖paintComponent(..)。也许在这里查看paintComponent(..) 的一些用法。此外,通过发布SSCCE,您将更快获得更好的帮助。
  • 这是讲师告诉我们的。我对 GUI 编程很陌生。事实上,这是我的第一个 Java GUI 项目。
  • 基本上,每个形状都有自己的类,每个类都包含其绘制方法。还有一个类叫Shapes,这就是原来paint方法所在的地方。
  • 好的。尽管如此,还是感谢您提供的信息:)
  • Shape.getBounds() 正如我所提到的。

标签: java swing graphics resize border


【解决方案1】:

您是正确的,您不能在 MouseListener 方法中进行绘画。您可以在您的mouseClicked 方法中设置shapeUnderMouse,然后调用repaint。如果您只重新绘制您知道在视觉上发生变化的区域,您将获得更好的性能,但这并不是绝对必要的。

if (shapeUnderMouse != null) 块应该放在你的 paint 方法中。

【讨论】:

    猜你喜欢
    • 2019-03-07
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多