gpt4 book ai didi

java - MoveIt 小程序图像不会在 Canvas 中左右移动

转载 作者:行者123 更新时间:2023-12-01 12:40:19 25 4
gpt4 key购买 nike

请有人帮我弄清楚为什么我的图像不会向左或向右移动。

我有一个任务要做,就是创建一个小程序,当您按下按钮(上、下、左、右或中心)时,图像就会朝那个方向移动。

我的图像向上、向下和向中心移动,但不会向左或向右移动

请看下面我的编码

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class MoveIt extends Applet implements ActionListener
{
private Image cup;
private Panel keypad;
public int top = 15;
public int left = 15;
private Button keysArray[];

public void init()
{
cup = getImage(getDocumentBase(), "cup.gif");
Canvas myCanvas = new Canvas();
keypad = new Panel();

Button up = new Button("Up");
Button left = new Button("Left");
Button right = new Button("Right");
Button down = new Button("Down");
Button center = new Button("Center");

setBackground(Color.blue);

setLayout(new BorderLayout());
keypad.setLayout(new BorderLayout());


keypad.add(up, BorderLayout.NORTH);
keypad.add(down, BorderLayout.SOUTH);
keypad.add(right, BorderLayout.EAST);
keypad.add(left, BorderLayout.WEST);
keypad.add(center, BorderLayout.CENTER);

add(myCanvas, BorderLayout.NORTH);
add(keypad, BorderLayout.SOUTH);


up.addActionListener(this);
down.addActionListener(this);
right.addActionListener(this);
left.addActionListener(this);
center.addActionListener(this);
}

public void paint(Graphics g)
{
g.drawImage(cup, left, top, this);
}

public void actionPerformed(ActionEvent e)
{
String arg = e.getActionCommand();

if (arg == "Up")
top = top - 15;

if (arg == "Down")
top = top + 15;

if (arg == "Left")
left = left - 15;

if (arg == "Right")
left = left + 15;

if (arg == "Center")
top = 60;
left = 125;

repaint();
}

}

最佳答案

有两个错误...

首先...

arg == "Up"

这不是你的做法String相反,在 Jave 中进行比较,您应该使用 String.equals ,例如...

"Up".equals(arg)

看看How do I compare strings in Java?了解更多详情...

其次

您正在尝试在 if 内执行两项操作条件,但只执行了第一个 sateemt...

if (arg == "Center")
top = 60;
left = 125;

这里的问题是left = 125;无论您按下哪个按钮,都将始终执行,这意味着该对象永远无法向左移动。

如果您希望在 if 内执行多个语句语句,您需要将它们包装在 {...} 内,这对您所有的人来说都是个好主意if声明确实如此

if (arg == "Center") {
top = 60;
left = 125;
}

已更新...

我还应该讨论一下使用 Applet 的相关性超过 JApplet或者使用小程序作为教学工具,但您可能对这些决定没有太多控制权......

请注意,Applet已替换为 JApplet所以 15 年前,小程序通常比独立程序更难开发(使用 JFrame )。

作为一般规则,您应该始终调用 super.paint由于绘画通常是通过将一系列其他方法链接在一起来实现的,因此更新时可能会产生绘画伪影。

通常也不鼓励覆盖 paint顶级容器,例如 Applet也是如此。

关于java - MoveIt 小程序图像不会在 Canvas 中左右移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com