java图形更新

标签 java swing graphics ascii

嘿,我正在尝试用 Java 制作一个简单的 ascii 游戏,但我无法让图形在按键时更新

我正在努力让这个人可以用箭头键控制

代码如下

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.Timer;


public class shooter extends JFrame{
    int x = 100, y = 100, dx, dy;
    Timer time;
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    public void move(){
        x = x + dx;
        y = y + dx;
    }
    public int getX(){
        return x;
    }
    public int getY(){
        return y;
    }

    public shooter() {
        setTitle("title of gip");
        setSize(600, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);

        //keep at bottom
        setVisible(true);
        //dont code here >:(
    }

    ///////////GRAPHICS ////////////////////
    public void paint(Graphics g){
        g.clearRect(0, 0, getWidth(), getHeight());
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(Color.white);
        g.drawString("☺", getX(), getY());
    }
    public void paintComponent(Graphics g){

    }
    //////////////end of graphics//////////////

    public void keyPressed(KeyEvent e){
        int pressed = e.getKeyCode();
        if (pressed == KeyEvent.VK_LEFT){
            dx = -1;
        }
        if (pressed == KeyEvent.VK_RIGHT){
            dx = 1;
        }
    }
    public void keyReleased(KeyEvent e){
        int rel = e.getKeyCode();
        if (rel == KeyEvent.VK_LEFT){
            dx = 0;
        }
        if (rel == KeyEvent.VK_RIGHT){
            dx = 0;
        }
    }
    public void actionPerformed(ActionEvent e) {
        move();
        repaint();
    }
    public static void main(String[] args){
        new shooter();


    }

} 

请帮忙 谢谢

最佳答案

您还没有为您的框架添加任何 Action 监听器。当这些事件发生时,将调用按下键和执行 Action 的方法,但只能从附加了 Action 监听器或按键监听器的对象中调用。

查看 http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html .

简而言之,尽管您需要以下内容,public class TryItOut extends JFrame implements ActionListener,KeyListener{ 以及构造函数中的 addActionListener(this);addKeyListener (这个);

这样做,然后从那里开始尝试。

关于java图形更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288897/

相关文章:

java - 何时使用 firebase 函数以及何时使用 firestore 客户端函数?

java - 将图像绘制为按钮的背景或使用 Java2D 绘制它更好/更快吗

java - Enterprise Architect Java 代码生成文件导入

java - 如何在android中点击后永远隐藏按钮?

java - 在用户按下 [x] 后窗口关闭之前做一些事情

java - JLabel setText() 方法不起作用

opengl - 有了 OpenCL,GLSL 的意义何在?

ios - 快速绘制圆弧时的额外线条

java - 绘制多个移动图形

java - 每个声明之间有什么区别,对每个声明有什么影响?