- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请有人帮我弄清楚为什么我的图像不会向左或向右移动。
我有一个任务要做,就是创建一个小程序,当您按下按钮(上、下、左、右或中心)时,图像就会朝那个方向移动。
我的图像向上、向下和向中心移动,但不会向左或向右移动
请看下面我的编码
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/
请有人帮我弄清楚为什么我的图像不会向左或向右移动。 我有一个任务要做,就是创建一个小程序,当您按下按钮(上、下、左、右或中心)时,图像就会朝那个方向移动。 我的图像向上、向下和向中心移动,但不会向左或
我目前正在开展一个项目,在该项目中,我在同一场景中独立地为机器人生成和控制 2 个 ARM 。我要离开 OpenManipulator 文档/教程,并使用 MoveIt 来控制他们的默认 ARM ,来
我正在尝试从 Rviz 平台中的 universal robot 包运行 ur5 ARM 。为此,我调整了 Moveit “移动组 Python 界面” 教程中的原始 python 代码: http:
你好, 注意:尽管这是一个与 ROS 相关的问题,但我将其张贴在这里是因为我很确定我的问题出在 C++ 而不是 ROS API。 我正在尝试使用函数 setFromIK定义于 moveit::core
当我安装 移动 在 Ubuntu 14.4 上,在命令行“catkin_make”之后发生错误。 错误详情如下: `heng@AspireE1:~/catkin_ws$ catkin_make Ba
我是一名优秀的程序员,十分优秀!