如何洗掉以前繪制的矩形? 我是 javax.swing 和 java.awt 庫領域的初學者,我看了很多教程甚至 java 檔案,但似乎沒有任何效果
public class Main extends javax.swing.JFrame implements KeyListener {
private Rectangle player;
private int playerX = 50;
private int playerY = 50;
public static void main(String[] args) {
Main main = new Main();
main.setSize(400, 400);
main.setVisible(true);
}
public Main() {
this.addKeyListener(this);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
e.getWindow().dispose();
}
});
this.player = new Rectangle(this.playerX, this.playerY, 100, 100);
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT:
this.player.setLocation(this.player.x - 10, this.player.y);
break;
case KeyEvent.VK_RIGHT:
this.player.setLocation(this.player.x 10, this.player.y);
break;
case KeyEvent.VK_UP:
this.player.setLocation(this.player.x, this.player.y - 10);
break;
case KeyEvent.VK_DOWN:
this.player.setLocation(this.player.x, this.player.y 10);
break;
default : break;
}
this.repaint();
}
@Override
public void paint(java.awt.Graphics g) {
g.drawRect(this.player.x, this.player.y, 100, 100);
}
}
uj5u.com熱心網友回復:
您必須像這樣在方法中呼叫超級方法paint:
@Override
public void paint(java.awt.Graphics g) {
super.paint(g);
g.drawRect(this.player.x, this.player.y, 100, 100);
}
或者您也可以通過在JFrame.
使用畫布可能很有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/473162.html
上一篇:JTree-TreeCellEditor實作更改節點物件類
下一篇:Swing從彈出表中獲取用戶輸入
