java - 尝试重新绘制 jpanel

标签 java swing jpanel keylistener repaint

请注意,我对所有这些编程都很陌生。现在我有一个框架,其中添加了一个面板。我相信我已经在面板上使用了 PaintComponent 方法,但是现在当我尝试使用按键监听器时,我需要移动我在面板上绘制的图像。我目前不知道如何重新绘制它。

 import java.awt.*;
 import java.io.*;
 import java.awt.event.*;

 import javax.swing.*;

 @SuppressWarnings

 ("serial")

 public class Game extends JPanel implements KeyListener
 {
 Car fo = new Car();
 draw a=new draw();
public Game()

{
    JFrame frame2=new JFrame("JASA1 Racing");
    frame2.add(new draw());
    frame2.setSize(500,600);//set frame size
    frame2.setVisible(true);//made frame visible
    frame2.setResizable(false);
    frame2.addKeyListener(this);
    frame2.setFocusable(true);
}

public class draw extends JPanel 
{

    private static final long serialVersionUID = 1L;

        public void redraw()
        {
            repaint();
        }

        public void paintComponent(Graphics g)
        {
            super.paintComponent(g);
            ImageIcon ic2=new ImageIcon("C:\\Users\\Shawn\\track.jpg");
            Image img=ic2.getImage();
            g.drawImage(img, 0, 0,null);
            g.drawImage(fo.getcar(),fo.getX(),fo.getY(),null);
            System.out.println(fo.getX() + "    " + fo.getY());

        }

}

public void keyPressed(KeyEvent e)
{
    int key = e.getKeyCode();
    if(key == KeyEvent.VK_LEFT)
    {
        fo.move(-50, 0);
        System.out.print(fo.getX());
        a.repaint();
    }

    else if(key == KeyEvent.VK_RIGHT)

    {
        fo.move(50, 0);
        System.out.print(fo.getX());
             a.redraw();
    }

}
    public void keyReleased(KeyEvent e)
    {   
    }
    public void keyTyped(KeyEvent e)
    {
    }

}

最佳答案

draw a=new draw(); 不是您添加到框架中的内容,您使用了 frame2.add(new draw()); 相反。

尝试使用frame2.add(a);

我还会考虑使用 Key Bindings因为它将允许您克服与 KeyListener

相关的焦点问题

关于java - 尝试重新绘制 jpanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21035073/

相关文章:

Java-拉线动画滞后且不可见

java - 如何使用JAVA模拟GET HTTP请求

java - 正则表达式如何选择 "."之后的任何字符

java - spring servlet 映射到 .html 会响应工作,但映射到非 html 结尾 url 不会

java - MVC 应用程序中的 DocumentListener 验证错误

java - Java/Swing 中的分段列表?

java - 处理大量的键映射

java - 添加到其他 JPanel 时 JPanel 不呈现

java - Glassfish 启动

java - Java 中的绘图程序。 JPanel 刷新很糟糕