gpt4 book ai didi

java - 用左键移动 JLabel?

转载 作者:太空宇宙 更新时间:2023-11-04 12:38:05 25 4
gpt4 key购买 nike

即使在帮助下我也一直在尝试,但我似乎无法按左箭头键移动我的 JLabel。我尝试了很多方法,仍然没有任何进展。我究竟做错了什么?我已将代码设置为按下左键时(无论如何应该如此)将 X 变量减少一,将标签向左移动,而不是保持在原位。

    package com.game.user;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class Main {
static int x = 474;
static int y = 202;
public static void main(String[] args) {
JFrame frame = new JFrame("game");
frame.setVisible(true);
frame.setBounds(700, 700, 700, 700);
frame.setLayout(null);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel label = new JLabel();
label.setIcon(new ImageIcon("E:\\sword.png"));
label.setBounds(x, y, 24, 24);
label.setVisible(true);
JPanel contentPane = new JPanel();
frame.setContentPane(contentPane);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
contentPane.add(label);
/* Keyboard key = new Keyboard();
addKeyListener(key);
*/label.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyChar()==KeyEvent.VK_LEFT){
x--;
}



}
});

/*String keyString;
if (id == KeyEvent.KEY_TYPED) {
char c = e.getKeyChar();
keyString = "key character = '" + c + "'";
System.out.print("hello");
} else {
int keyCode = e.getKeyCode();
keyString = "key code = " + keyCode+ " ("+ KeyEvent.getKeyText(keyCode)+ ")";
}
}
});

}

private static void addKeyListener(Keyboard key) {
// TODO Auto-generated method stub

}*/

}}

最佳答案

焦点是问题所在。因为只有当对象可聚焦并且具有焦点时才会触发事件 (keyPressed)。您的 JLabel 没有焦点,因此不会触发按键事件。

要修复,请使用 Key Bindings API

这是一个示例。

this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_D, 0, false), "right");
this.getActionMap().put("right", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
//increment X as it is moving Right
}
});

然后调用...

lbl.revalidate();

在设置新的 x-y 值后更新 Jlabel。

这是查看焦点如何影响 Swing 中按键工作方式的完美链接

http://www.javaworld.com/article/2076720/core-java/focus-on-swing.html

关于java - 用左键移动 JLabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37106699/

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