0
我試圖讓代碼移動畫布上繪製的東西。但是,我不知道該怎麼辦。截至目前,每當我按下應該使對象向右或向左移動的按鍵時,繪製的對象就會消失。但是,其他不應該移動的物體會停留在屏幕上。該代碼不會重新正確
更多信息:運行時,代碼只會顯示繪製的圓。但是,我認爲隨着繪圖一直閃爍閃爍,它將永久重新繪製。當我嘗試按下與按鍵監聽器相關聯的按鈕時,沒有任何反應。
按下按鈕幾秒鐘後,圓圈完全消失。
這裏是質量低劣的代碼和混亂:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
public class FaceFrame extends JFrame {
private FaceCanvas face;
public FaceFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 800);
setVisible(true);
setLayout(new BorderLayout());
face = new FaceCanvas();
add(face, BorderLayout.CENTER);
}
public static void main(String args[]) {
JFrame faceFrame = new FaceFrame();
}
}
class FaceCanvas extends Canvas
{ private int xpos, ypos;
public FaceCanvas()
{
setBackground(Color.BLUE);
setSize(300, 300);
xpos = ypos = 50;
}
public void paint(Graphics g)
{ // override paint method by re-defining it
g.setColor(Color.WHITE);
g.drawOval(xpos, ypos, 31, 31);
g.drawLine(xpos + 10, ypos + 20, xpos + 20, ypos + 20);
repaint();
}
class KeyListenerTester extends JFrame implements KeyListener {
public KeyListenerTester() {
}
@Override
public void keyTyped(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
}
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
addX(-10);
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
}
}
}
public void addX(int x)
{
xpos = xpos + 10;
repaint();
}
}