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

时间:2013-11-01 21:19:44

标签: java swing jcomponent

我正处于我的第一个独立Java项目之中,而且我对所有库的知识都很有限,但对语言感觉很舒服。此项目需要一个带有JTextArea的GUI界面,该界面显示左侧的用户指导说明,右侧带有一些按钮的JPanel。在我的面板上,我想要包含一个带有简单绘图的组件 - 比如三个不同大小和不同颜色的矩形 - 并为每个矩形添加不同的actionListeners。我该如何开始实施呢?我可以在JPanel中添加哪种组件来实现这一目标?

非常感谢任何建议。

4 个答案:

答案 0 :(得分:3)

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

具体做法是:

  

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

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

  

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

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

有关详情,请查看:

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果你想添加不同的动作听众 - >使用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)

答案 3 :(得分:0)

  

我可以在JPanel中添加哪种组件来实现这一目标?

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