我通常使用Python编程,但几个小时前有些朋友问过我是否可以帮助他们完成他们的Java作业。所以我几个小时前就开始学习Java了。
无论如何,他们需要一个程序,直观地展示空气动力学在高速行驶时如何影响某些物体。没有什么复杂的,可能只是一个球左右,所以一个简单的圆就足够了。
我刚刚掌握了ActionListeners和东西,但是当点击鼠标按钮时,如何才能使Canvas对象中显示的对象发生变化?
答案 0 :(得分:2)
Add a MouseListener到画布,并在侦听器的mouseClicked()
方法中,更改画布绘制的对象的状态,并调用画布repaint()
方法以便画布根据修改后的状态重新绘制自己。
答案 1 :(得分:1)
我建议扩展JPanel
并使用paintComponent()
代替Canvas
,因为这是非常过时的AWT内容。基本上您需要做的是将MouseListener
添加到您最终使用的任何调色板(Canvas
或JPanel
)中,并在被覆盖的mouseClicked()
侦听器中绘制你喜欢的东西。每次更改后也请致电repaint()
(您可以创建一个定时器为您定期执行此操作 - 请参阅this问题的第一个答案)。
当谈到绘画球时,我建议使用Java2D API(查看Ellipse2D
)而不是普通drawOval()
(这可能看起来很简单)。原因是Ellipse2D
允许你使用一堆非常有用的方法(例如参见setFrame()
)并且是一个维护状态的“真实对象”。您可以使用Ellipse2D
作为形状的图形表示,轻松地使用合成来创建具有所需行为的形状类。然而,使用drawOval()
而不创造一堆凌乱的程序面条要困难得多。