单击不同的按钮时,使Canvas对象绘制不同的形状?

时间:2012-12-15 09:03:47

标签: java awt

我通常使用Python编程,但几个小时前有些朋友问过我是否可以帮助他们完成他们的Java作业。所以我几个小时前就开始学习Java了。

无论如何,他们需要一个程序,直观地展示空气动力学在高速行驶时如何影响某些物体。没有什么复杂的,可能只是一个球左右,所以一个简单的圆就足够了。

我刚刚掌握了ActionListeners和东西,但是当点击鼠标按钮时,如何才能使Canvas对象中显示的对象发生变化?

2 个答案:

答案 0 :(得分:2)

Add a MouseListener到画布,并在侦听器的mouseClicked()方法中,更改画布绘制的对象的状态,并调用画布repaint()方法以便画布根据修改后的状态重新绘制自己。

答案 1 :(得分:1)

我建议扩展JPanel并使用paintComponent()代替Canvas,因为这是非常过时的AWT内容。基本上您需要做的是将MouseListener添加到您最终使用的任何调色板(CanvasJPanel)中,并在被覆盖的mouseClicked()侦听器中绘制你喜欢的东西。每次更改后也请致电repaint()(您可以创建一个定时器为您定期执行此操作 - 请参阅this问题的第一个答案)。

当谈到绘画球时,我建议使用Java2D API(查看Ellipse2D)而不是普通drawOval()(这可能看起来很简单)。原因是Ellipse2D允许你使用一堆非常有用的方法(例如参见setFrame())并且是一个维护状态的“真实对象”。您可以使用Ellipse2D作为形状的图形表示,轻松地使用合成来创建具有所需行为的形状类。然而,使用drawOval()而不创造一堆凌乱的程序面条要困难得多。