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