2012-12-14 3 views
-1

그래, 나는 자바를 처음 접했어. 내 문제는 이것입니다 :값을 변경 한 키를 눌렀을 때 어떻게 이벤트를 발생시킬 수 있습니까?

"컨트롤"이라는 클래스가 있습니다. 이 클래스는 KeyListener를 구현해, 키 코드를 읽어 낼 수가 있습니다. "디스플레이"라는 또 다른 클래스가 있습니다. 키를 누르면 Control 인쇄를 콘솔에 텍스트로 만들 수 있습니다. 그러나 이제 키를 누르면 컨트롤 클래스에서 int X를 변경하고이 값을 Display의 메서드에 보내려고합니다. 디스플레이에는 값으로 무엇인가를해야하는 메소드가 있습니다.

여기에 새로운 코드입니다 :

CONTROL.JAVA

제어 모든 KeyListener를 구현하는 공용 클래스 {

private Display display; 
private int x = 0; 

public Control(){ 

} 

public void keyPressed(KeyEvent e) { 

    if (e.getKeyCode() == KeyEvent.VK_D){ 

     x++; 
     System.out.println("D"); 
    } 
    else if (e.getKeyCode() == KeyEvent.VK_A){ 

     x--; 
     System.out.println("A"); 
    } 

    display.DoSomethingWithX(x); 
    } 

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

DISPLAY.JAVA

공용 클래스 디스플레이 {

JPanel의 확장
public Display(){ 

    JFrame main = new JFrame("Unnamed"); 
    main.add(this); 

    main.setSize(xWidth, yHeight); 
    main.setVisible(true); 
    main.setDefaultCloseOperation(main.EXIT_ON_CLOSE); 

    main.addKeyListener(new Control()); 
    main.setFocusable(true); 
} 

public void DoSomethingWithX(int x){ 

    Graphics g; 
    g.setColor(c); //Let's assume c is already defined somewhere. 
    g.drawLine(x, 25, x, 25); //Don't mind the y value. It is least important. 
} 

public static void main(String[] args){ 
    Display display = new Display(); 
} 
,

}

+2

1 같이 할 수 있도록 더 나은 도움이 필요한 경우) Display 객체에 Control 참조가 필요). 2) 클래스에 대한 일반적인 [Java 명명 규칙 (Java 命名 規則)] (http://java.sun.com/docs/books/books/books/jls/second_edition/html/names.doc.html#73307) (특히 이름에 사용 된 사례)을 배우십시오. , 메소드 및 속성 이름 및 일관되게 사용하십시오. –

답변

0

당신은 http://sscce.org/ (빨리,이 [SSCCE] 게시물이

public void keyPressed(KeyEvent e) { 

    if (e.getKeyCode() == KeyEvent.VK_D){ 
     x++; 
    } 
    else if (e.getKeyCode() == KeyEvent.VK_A) { 
     x--; 
    } 

    //display is instance of Display class 
    display.doSomthingWithXValue(x); 
} 
+0

글쎄, 부분적으로 작동하지만, 프로그램이 지금 당장 크래시가 안되지만, 키를 누르 자마자 충돌이 발생합니다. – user1904252

+0

충돌 시스템이 제공하는 오류 메시지는 무엇입니까? – Kaadzia

+0

@ user1904252, 무엇이 오류입니까? 귀하의 질문에 업데이트 된 코드와 더 많은 코드를 보여주십시오. –