我通常用Python编程,但几个小时前,一些朋友问我是否可以帮助他们完成Java作业。我从几个小时前就开始学习Java了。
无论如何,他们需要一个程序来直观地演示高速飞行时空气动力学对某些物体的影响。不过没什么复杂的,可能只是一个球左右,所以一个简单的圆圈就足够了。
我刚刚掌握了ActionListeners之类的诀窍,但是当鼠标按键被单击时,我如何才能使画布对象中显示的对象发生变化呢?
发布于 2012-12-15 17:09:58
Add a MouseListener到画布,在侦听器的mouseClicked()方法中,更改画布绘制的对象的状态,并调用画布repaint()方法,以便画布可以根据修改后的状态重新绘制自身。
发布于 2012-12-15 17:20:36
我建议扩展JPanel并使用paintComponent()而不是Canvas,因为这是非常过时的东西。基本上,您需要做的是将MouseListener添加到您最终使用的任何调色板(Canvas或JPanel)中,并在侦听器的覆盖mouseClicked()中绘制您喜欢的内容。还要在每次更改后调用repaint() (您可以创建一个计时器来定期执行此操作-请参阅this问题的第一个答案)。
当涉及到绘制一个球时,我建议使用Java2D应用程序接口(查看Ellipse2D),而不是普通的drawOval() (这可能在一开始看起来是一种简单的解决方法)。原因在于Ellipse2D允许您使用一组非常有用的方法(例如,参见setFrame() ),并且是一个维护状态的“真实对象”。您可以轻松地使用组合来创建具有所需行为的shape类,并使用Ellipse2D作为形状的图形表示。然而,要使用drawOval()而不创建一堆混乱的过程化问题要困难得多。
https://stackoverflow.com/questions/13890846
复制相似问题