2013-06-17 2 views
0

내 문제는 공이 일단 움직이면 선으로 변하는 것입니다. 내가 공의 이동을 의미하지만, 이전을 제거하지 않습니다, 그것은 라인으로 전환 말할 때자바 공 이동

package Java; 

import java.awt.*; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 

import javax.swing.*; 

public class javagame extends JFrame { 

    private Image dbImage; 
    private Graphics dbg; 

    int x, y; 

    public class AL extends KeyAdapter { 
     public void keyPressed (KeyEvent e) { 

      int keyCode = e.getKeyCode(); 
      if(keyCode == e.VK_LEFT) { 
       x-= 5; 
      } 
      if(keyCode == e.VK_RIGHT) { 
       x+= 5; 
      } 
      if(keyCode == e.VK_UP) { 
       y-= 5; 
      } 
      if(keyCode == e.VK_DOWN) { 
       y+= 5; 
      } 
     } 
     public void keyReleased (KeyEvent e) { 
     } 
    } 

    public javagame() { 
     addKeyListener(new AL()); 

     setTitle("Java Game"); 
     setSize(750, 750); 
     setResizable(false); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     x = 250; 
     y = 250; 
    } 

    public void paint(Graphics g) { 
     dbImage = createImage(getWidth(), getHeight()); 
     dbg = dbImage.getGraphics(); 
     paintCompenent(dbg); 
     g.drawImage(dbImage, 0, 0, this); 
    } 

    public void paintComponent (Graphics g){ 
     g.drawString("Copy Right All rights reserved to Aaron Collins 2013-2013", 275, 100); 
     g.drawLine(270, 105, 415, 105); 

     g.fillOval(x, y, 15, 15); 

     repaint(); 
    } 

    public static void main(String[] args) { 
     new javagame(); 
    } 
} 

:
다음은 코드입니다.
내 게임을 계속할 수 있도록 문제를 해결하도록 도와주세요!

+0

이 코드는 컴파일되지 않습니다. 사용중인 실제 코드입니까? –

+0

예 ... 이클립스를 사용하고 있습니다. –

+0

'paintCompenent' 메서드가 없으므로'paintCompenent (dbg);'행에 질문합니다. 그리고 그 라인이 원본에서 변경된 경우, 그 밖의 무엇이 변경 되었습니까? –

답변

3
  1. 혹시 이전에 그린 무슨 일이 남아 있다는 것을 의미, 구성 요소는 새로운 페인트주기위한 그래픽 컨텍스트를 준비 결코 의미 super.paint 전화 paint을 무시하지 않지만 결코
  2. JFrame는 않기 때문에 귀하의 paintComponent 메서드가 호출되지 않습니다
  3. 이 방법을 지원하지 않습니다
  4. 최상위 컨테이너 (예 : JFrame)에서 맞춤 그림을 수행하지 않아야하며 JPanel과 같은 것을 사용하고 paintComponent 메소드를 우선 적용해야합니다 (super.paintComponent을 먼저 호출해야 함). 당신은 또한 당신이 오버 라이딩 어떤 paintXxx 방법에서 다시 그리기를 트리거 할 수있는 방법을 호출하지 않도록해야
  5. ... 같은 repaint

Graphics 상황이다 Graphics 컨텍스트는 것을 의미 공유 자원, 주어진 UI를 사용하여 다른 모든 구성 요소를 그렸습니다. paintComponent는에 페인트하고자하는 영역을 취소하여 그림에 대한 Graphics 컨텍스트를 준비 할 책임이있다.

난 당신이 나 또한 KeyListener을 피하고 대신 Key Bindings API을 사용 Custom Painting

을 통해 읽기를 취할 것을 권 해드립니다.

+0

네,하지만 이미 다른 사람과 얘기하고 고쳤습니다. 하지만 정보 주셔서 감사합니다. –