我正在进行我的第一个独立 Java 项目,我对所有可用的库了解有限,但对这种语言感觉很舒服。该项目需要一个带有 JTextArea 的 GUI 界面,该界面在左侧显示用户指导说明,在右侧有一个带有一些按钮的 JPanel。在我的面板上,我想包含一个带有简单绘图的组件——例如,三个不同大小和不同颜色的矩形——并向每个矩形添加不同的 actionListener。我应该如何开始实施这个?我可以向我的 JPanel 添加什么样的组件来实现这一目标?
任何意见是极大的赞赏。
我正在进行我的第一个独立 Java 项目,我对所有可用的库了解有限,但对这种语言感觉很舒服。该项目需要一个带有 JTextArea 的 GUI 界面,该界面在左侧显示用户指导说明,在右侧有一个带有一些按钮的 JPanel。在我的面板上,我想包含一个带有简单绘图的组件——例如,三个不同大小和不同颜色的矩形——并向每个矩形添加不同的 actionListener。我应该如何开始实施这个?我可以向我的 JPanel 添加什么样的组件来实现这一目标?
任何意见是极大的赞赏。
您可以在 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 。
有关这方面的更多信息,请查看:
您可以使用 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 没有,但您可以查看Playing With Shapes并可能使用ShapeComponent
,然后您只需为每个组件添加一个 MouseListener。