【发布时间】:2015-03-25 06:33:09
【问题描述】:
我在 JFrame 中重绘时遇到问题,我之前在制作动画时使用了 repaint() 并且一切正常
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Draw extends JComponent implements KeyListener {
int x = 0;
int y = 0;
public void paint(Graphics g){
g.setColor(Color.BLUE);
g.fillRect(x, y, 50, 50);
}
public void keyPressed(KeyEvent k) {
if(k.getKeyCode() == KeyEvent.VK_UP){
y -= 2;
} else if(k.getKeyCode() == KeyEvent.VK_DOWN){
y += 2;
} else if(k.getKeyCode() == KeyEvent.VK_LEFT){
x -= 2;
} else if(k.getKeyCode() == KeyEvent.VK_RIGHT){
x += 2;
}
repaint();
}
public void keyReleased(KeyEvent k) {}
public void keyTyped(KeyEvent k) {}
}
这是我的绘图类,如果我作为小程序运行,一切正常,但我不想要小程序
我的框架类
import javax.swing.*;
public class Frame {
Draw d = new Draw();
public Frame(){
JFrame f = new JFrame("Game");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(800, 600);
f.setVisible(true);
f.add(d);
f.addKeyListener(new Draw());
}
}
还有我的主班
public class Main {
public static void main(String[] args) {
Frame f = new Frame();
}
}
repaint() 是不工作的,我测试了它工作的关键侦听器,为什么 repaint() 不工作?
【问题讨论】:
标签: java swing draw keylistener repaint