- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个框架,里面有一个矩形。我想知道如果单击箭头键如何移动矩形。我进行了搜索,发现了一些例子,但没有任何效果(很奇怪,因为这应该是一件简单的事情)
这是我的矩形类:
public class PlayerOne implements KeyListener {
int x,y;
public PlayerOne(JPanel panel){
this.x = panel.getWidth()/2;
this.y = panel.getHeight()/2;
}
public void paint(Graphics g){
g.setColor(Color.RED);
g.fillRect(125, 480, 60, 10);
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
int keyCode = arg0.getKeyCode();
if(keyCode == arg0.VK_KP_RIGHT){
this.x+=5;
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
这是主要的:
public class PingPong extends JPanel {
private static final long serialVersionUID = -4170574729049260633L;
//Initialize
Table table = new Table();
PlayerOne po = new PlayerOne(this);
public void paintComponent(Graphics g){
super.paintComponent(g);
table.paint(g);
po.repaint(g);
}
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setTitle("Pong");
frame.setSize(326, 533);
frame.add(new PingPong()).setBackground(Color.DARK_GRAY);
frame.getContentPane().setBackground(Color.DARK_GRAY);
frame.setVisible(true);
}
}
最佳答案
这里有很多问题:
问题在于您的矩形绘图是硬编码的,如下所示:
public void paint(Graphics g){
g.setColor(Color.RED);
g.fillRect(125, 480, 60, 10);
}
您需要使用 x
变量而不是 125
为了接受按键事件,您的 JPanel 需要接受焦点,这可以通过以下几行来实现:
setFocusable(true);
requestFocusInWindow();
您现在将接收键盘事件并更改您的 x
值。不幸的是,这不会触发重新绘制,因此您的盒子仍然不会移动。
你真的应该进一步分解你的类,因为你的职责分配有点奇怪。当发生关键事件时,您需要告诉您的 JPanel repaint()
本身,以便更新反射(reflect)在屏幕上。
关于java - 如何用方向键移动矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30237571/
警告:我不确定这篇文章是否更适合 SuperUser 或 SE 系列中的其他论坛。如果您知道这篇文章的更合适位置,请告诉我,我会迁移它。 我知道 eclipse for Java 扩展了 Ctrl+L
我正在使用 colemak,因此我重新映射了我的方向键,就像这样 noremap n h noremap e j noremap i k noremap o l noremap h n noremap
我想知道您是否可以像 Java、C+ 等一样接收键盘输入。或者如果没有外部库? 以下是有关 2D 迷宫游戏的一些信息: 您使用箭头键在迷宫中导航。您可以使用向上和向下箭头键选择菜单中的对象,例如: -
我想使用 google map api 来获取两个位置之间的路线。在我的 IOS 应用程序中。我尝试为项目创建公钥并在开发人员控制台中启用使用 API。但我收到此错误:此 ip 站点或移动应用程序未被
是否有内置的方法将箭头键(右、左)绑定(bind)到 buefy 分页元素?还是我需要使用 vanillaJS 键盘事件? 最佳答案 Vue 定义 key modifiers 关于vue.js -
我是一名优秀的程序员,十分优秀!