Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当单击不同的按钮时,使画布对象绘制不同的形状?_Java_Awt - Fatal编程技术网

Java 当单击不同的按钮时,使画布对象绘制不同的形状?

Java 当单击不同的按钮时,使画布对象绘制不同的形状?,java,awt,Java,Awt,我通常用Python编程,但几个小时前一些朋友问我是否可以帮助他们完成Java作业。所以我从几个小时前开始学习Java 无论如何,他们需要一个程序,直观地演示在高速行驶时空气动力学如何影响某些物体。不过没什么复杂的,可能只是一个球左右,所以一个简单的圆圈就足够了 我刚刚掌握了ActionListeners之类的技巧,但是我如何才能在单击鼠标按钮时更改画布对象中显示的对象呢?到画布,在侦听器的mouseClicked()方法中,更改画布绘制的对象的状态,并调用画布repaint()方法,以便画布根

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

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


我刚刚掌握了ActionListeners之类的技巧,但是我如何才能在单击鼠标按钮时更改画布对象中显示的对象呢?

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

到画布,在侦听器的
mouseClicked()
方法中,更改画布绘制的对象的状态,并调用画布
repaint()
方法,以便画布重新绘制自身,基于修改的状态。

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


当涉及到绘制球时,我建议使用Java2D API(请看
Ellipse2D
),而不是简单的
drawOval()
(一开始可能看起来是简单的解决方法)。原因在于
Ellipse2D
允许您使用一系列非常有用的方法(例如,请参见
setFrame()
),它是一个维护状态的“真实对象”。使用
Ellipse2D
作为形状的图形表示,可以轻松地使用composition创建具有所需行为的形状类。然而,要使用
drawOval()
,而不创建一碗杂乱的程序面条,则要困难得多

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


当涉及到绘制球时,我建议使用Java2D API(请看
Ellipse2D
),而不是简单的
drawOval()
(一开始可能看起来是简单的解决方法)。原因在于
Ellipse2D
允许您使用一系列非常有用的方法(例如,请参见
setFrame()
),它是一个维护状态的“真实对象”。使用
Ellipse2D
作为形状的图形表示,可以轻松地使用composition创建具有所需行为的形状类。然而,要使用
drawOval()
,而不创建一碗杂乱的程序面条,则要困难得多

“我急需你的帮助。”我建议你雇一个人,给他们支付紧急费用。投票以“过于本地化-特定时间”结束。“我迫切需要你的帮助。”我建议你雇用一个人,并支付紧急费率。投票以“过于本地化-特定的时间点”结束。各点+1,但大部分是“一碗混乱的程序面”。嗯。。面条+1分,但大多是“一碗凌乱的面条”。嗯。。面条