2

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

任何意见是极大的赞赏。

4

4 回答 4

3

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

具体来说:

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

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

并为每个矩形添加不同的 actionListener。

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

有关这方面的更多信息,请查看:

于 2013-11-01T21:36:52.697 回答
0

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

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

于 2013-11-01T21:23:20.730 回答
0

如果你想添加不同的 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)

于 2013-11-01T21:36:44.320 回答
0

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

JDK 没有,但您可以查看Playing With Shapes并可能使用ShapeComponent,然后您只需为每个组件添加一个 MouseListener。

于 2013-11-02T01:08:23.130 回答