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