simple KeyListenerDemo.java示例:添加更多击键问题

simple KeyListenerDemo.java示例:添加更多击键问题,java,keylistener,Java,Keylistener,请原谅这个问题可能的相似性。我再次访问Java是为了教年幼的孩子们使用它,而且在过去我对图形也没有太多的经验。我目前也没有IDE来运行这段代码或进行调试,所以我想知道是否有人可以帮助我从概念上理解我应该编写什么样的代码来扩展程序 下面有一个示例程序,可以正常运行。我只需要通过增加一些击键功能(如程序说明/注释中所述)来扩展它,并确保球到达屏幕边缘,但仍然完全可见 请让我知道我是否正确添加了额外的击键功能,或者我有多近或多远。我正在考虑在按键(KeyEvent e)方法中添加以下代码行 我不完

请原谅这个问题可能的相似性。我再次访问Java是为了教年幼的孩子们使用它,而且在过去我对图形也没有太多的经验。我目前也没有IDE来运行这段代码或进行调试,所以我想知道是否有人可以帮助我从概念上理解我应该编写什么样的代码来扩展程序

下面有一个示例程序,可以正常运行。我只需要通过增加一些击键功能(如程序说明/注释中所述)来扩展它,并确保球到达屏幕边缘,但仍然完全可见

请让我知道我是否正确添加了额外的击键功能,或者我有多近或多远。我正在考虑在按键(KeyEvent e)方法中添加以下代码行

我不完全确定if-else块(上面和下面)中的代码应该如何更新球的特性。部分原因是因为我可能对重新绘制()和绘制(图形g)没有很好的理解。非常感谢您的任何见解或建议


乍一看,这似乎是正确的(尽管我也不经常使用图形)

请注意,如果要释放该键,则在下次重新绘制时,椭圆可能会从屏幕上消失

您可以创建一个简单的
Oval
包装类来存储x、y、宽度和高度等细节,并将这些
Oval
s放入一个列表中,该列表是
KeyListenerDemo
的一个实例变量

您的if块类似于:

else if(keyCode == KeyEvent.VK_Z)
{
    Oval o = new Oval(x + radius, y + radius, 2 * radius, 2 * radius);
    ovals.add(o); // where ovals is an ArrayList<Oval> or LinkedList<Oval>
    g.fillOval(o.x, o.y, o.width, o.height);
}
该列表仅声明为
protectedlist ovals=newlinkedlist(),就在主方法上方。要在其上循环(在绘制方法中,
g
可用,可以使用:

for(Oval o : ovals){
    g.fillOval(o.x, o.y, o.width, o.height);
}

希望这能有所帮助!

很抱歉,我对这方面很陌生,而且图形经验非常有限。您的椭圆形包装器类和椭圆形列表在代码方面会是什么样子?谢谢您的帮助。
else if(keyCode == KeyEvent.VK_Z)
{
    Oval o = new Oval(x + radius, y + radius, 2 * radius, 2 * radius);
    ovals.add(o); // where ovals is an ArrayList<Oval> or LinkedList<Oval>
    g.fillOval(o.x, o.y, o.width, o.height);
}
public class Oval {
   int x;
   int y;
   int width;
   int height;
   public Oval(int x, int y, int width, int height) {
       this.x = x;
       this.y = y;
       this.width = width;
       this.height = height;
   }


}
for(Oval o : ovals){
    g.fillOval(o.x, o.y, o.width, o.height);
}