gpt4 book ai didi

java - 无法让 JFrame 简单的类似绘画的程序与键绑定(bind)一起使用

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

没有错误或其他东西,只有一个透明屏幕(它将复制背景)和一个绘制的椭圆形,但每当我尝试在键盘中键入箭头键时,它都不起作用。我已经添加了 KeyListener 并将该类扩展为 JFrame,但它仍然没有执行任何操作。我知道这只是初学者的东西,但我自己也是初学者,这一直困扰着我:/。另外,我还使用了 repaint(); ,但它仍然重新渲染背景?感谢您提前的帮助!

package JavaMain;

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

import javax.swing.JFrame;

public class javamain extends JFrame {
int x, y;
private static final long serialVersionUID = 1L;
public class AL extends KeyAdapter {

private int keycode;
@SuppressWarnings("static-access")
public void keypress(KeyEvent event) {
keycode = event.getKeyCode();
if (keycode == event.VK_LEFT) {
x -= 10;
}
if (keycode == event.VK_RIGHT) {
x += 10;
}
if (keycode == event.VK_UP) {
y -= 10;
}
if (keycode == event.VK_DOWN) {
y += 10;
}
}

public void keyrelease(KeyEvent e) {
}
}

public javamain() {
addKeyListener(new AL());
setTitle("Statistic");
setSize(600, 800);
setResizable(false);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

x = 200;
y = 200;
}

public void paint(Graphics g) {
g.fillOval(x, y, 20, 20);
repaint();
}

public static void main(String[] args) {
new javamain();
}
}

最佳答案

错误出在您的 KeyListener 上。

AL 类未使用正确的方法名称。

据我所知,应该是 keyPressed 和 keyReleased。

private class AL extends KeyAdapter {

public void keyPressed(KeyEvent event) {

int keycode = event.getKeyCode();

if (keycode == KeyEvent.VK_LEFT) {
x -= 10;
}
if (keycode == KeyEvent.VK_RIGHT) {
x += 10;
}
if (keycode == KeyEvent.VK_UP) {
y -= 10;
}
if (keycode == KeyEvent.VK_DOWN) {
y += 10;
}
}

public void keyReleased(KeyEvent e) {

}
}

在不更改任何其他代码的情况下,这似乎可以工作。

关于java - 无法让 JFrame 简单的类似绘画的程序与键绑定(bind)一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38141792/

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