在我的 Java GUI 中包含图形/形状



我正处于我的第一个独立Java项目中,我对我可以使用的所有库的了解有限,但对这门语言感觉很舒服。此项目需要一个 GUI 界面,左侧有一个 JTextArea,显示用户指南的说明,右侧有一个带有一些按钮的 JPanel。在我的面板上,我想包括一个带有简单绘图的组件 - 例如,三个不同大小和不同颜色的矩形 - 并为每个矩形添加不同的actionListener。我应该如何开始实施?我可以向我的 JPanel 添加什么样的组件来实现这一点?

任何建议将不胜感激。

您可以在 JPanel 的 paintComponent(...) 方法中显示 Shape 对象(如 Rectangle2D 等),然后通过向 JPanel 添加 MouseListener 来识别对形状的单击。如果你要调整各种形状的大小,我不会使用JButton或类似的东西,而只是将单个MouseListener或MouseAdapter添加到单个绘图JPanel中。Shape 有一个contains(Point p)方法,可用于查看是否已单击任何形状。

具体说来:

在我的面板上,我想包括一个带有简单绘图的组件 - 比如,三个不同大小和不同颜色的矩形

三个 Rectangle2D 对象可以满足此要求,这些对象在扩展 JPanel 的类中声明,并在该 JPanel 的 paintComponent(Graphics g) 方法中绘制。您需要将图形对象转换为 Graphics2D,然后可以通过调用 draw(myRectangle) 来绘制 Rectangle2D 对象,并通过在绘制之前设置图形颜色来用不同的颜色填充它们,然后调用fill(myRectangle)

并为每个矩形添加不同的操作侦听器。

同样,我会使用添加到JPanel的单个MouseListener。您可以通过使用 MouseListener mousePressed 方法 MouseEvent 对象中提供给您的 Point 调用 contains(Point p) 来找出单击了哪个 Rectangle2D。

有关此内容的更多信息,请查看:

  • 如何编写鼠标侦听器
  • 课程:执行自定义绘画
  • 形状 API
  • 矩形2D API

您可以使用 JButtons 作为矩形。这使得操作处理变得容易。

http://docs.oracle.com/javase/tutorial/uiswing/components/button.html

如果你想添加不同的actionListeners ->使用JButtons。但你必须改变它的观点。

您可以使用的所有方法都在这里:http://docs.oracle.com/javase/7/docs/api/javax/swing/AbstractButton.html和这里http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#setBackground(java.awt.Color)

我可以向我的 JPanel 添加什么样的组件来实现这一点?

JDK没有,但您可以查看Play With Shapes,也许可以使用ShapeComponent,然后您可以为每个组件添加一个MouseListener。

最新更新