首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MoveIt小程序图像在画布中不会左右移动

MoveIt小程序图像在画布中不会左右移动
EN

Stack Overflow用户
提问于 2014-08-07 05:41:07
回答 1查看 234关注 0票数 0

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

我有一个任务要做,你创建一个小程序,当你按下一个按钮(向上,向下,向左,向右或居中)时,图像将沿该方向移动。

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

请看下面我的代码

代码语言:javascript
复制
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();
    }

}
EN

回答 1

Stack Overflow用户

发布于 2014-08-07 05:55:01

有两个错误..。

首先。

代码语言:javascript
复制
arg == "Up"

不是在Jave中进行String比较的方式,相反,您应该使用String.equals,例如...

代码语言:javascript
复制
"Up".equals(arg)

有关更多详细信息,请查看How do I compare strings in Java? ...

第二点

您正试图在if条件中执行两个操作,但只执行了第一个satememt ...

代码语言:javascript
复制
if (arg == "Center")
    top = 60;
    left = 125;

这里的问题是,无论你按下哪个按钮,left = 125;都会被执行,这意味着对象永远不能向左移动。

如果您希望在一条if语句中执行多个语句,则需要将它们包装在{...}中,这对于您的所有if语句来说确实是一个好主意

代码语言:javascript
复制
if (arg == "Center") {
    top = 60;
    left = 125;
}

已更新...

我还应该讨论使用Applet而不是JApplet或将applets作为教学工具的相关性,但您可能无法对这些决定进行太多控制……

请注意,Applet在15年前已经被JApplet取代,小程序通常比独立程序(使用JFrame)更难开发。

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

通常也不鼓励覆盖顶级容器的paint,比如Applet

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25170709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档