2013-03-11 1 views
0

내 프로그램의 구조를 도와 주실 수 있는지 궁금합니다. Java로 게임을 만들고 있는데 2 개의 클래스가 있습니다. 1 클래스는 JFrame을 paint 메서드로 확장 한 그래픽 클래스입니다.Swing을 사용하여 Java로 그래픽 구조를 구성하는 방법은 무엇입니까?

그래픽 클래스 paint() 및 JFrame을 매개 변수로 사용하는 다양한 객체를 호출합니다. 클래스 내부는, paint 메소드와 상호 작용하는 MouseListener 및 Mouse Motion Listener를 구현하는 서브 클래스입니다.

캔버스 클래스 버튼, 패널 등이있는 큰 캔버스 클래스에 첫 번째 클래스를 포함 시키려고 했으므로 본질적으로 클래스를 더 큰 프로그램 내에서 더 작은 (하위 프로그램)으로 사용합니다. 이것이 가능합니까/나는 이것을 올바른 방법으로하고 있습니다. 캔버스 클래스 내에서 그래픽 클래스를 호출하려고하면 그래픽이 표시되지 않습니다.

public Canvas(){ 
    graphic = new Graphic(name); 

} 
/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Canvas canvas = new Canvas(); 
      canvas.setDefaultCloseOperation(EXIT_ON_CLOSE); 
      canvas.setSize(1500, 1500); 
    canvas.setVisible(true); 
} 

} 는 어떤 도움/지침은 감상 할 수있다. 그래픽 프로그래밍에 대해 올바르게 생각하고 있는지를 주로 알고 싶습니다.

+0

[예] (http://docs.oracle.com/javase/tutorial/2d/index.html), [여기] (http://docs.oracle.com/javase/tutorial/uiswing/) painting/index.html), [그리고 여기] (http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/Catalog0261__2D-Graphics.htm) – mKorbel

답변

1

Canvas은 "창"이 아닙니다. 화면에 무엇이든 표시하려면 구성 요소를 창 위임자에 추가해야합니다.

개인적으로 최상위 컨테이너 인 paint 메서드를 재정의하지 마십시오. 이 주된 이유는 최상위 컨테이너가 이중 버퍼링되지 않기 때문에 응용 프로그램의 이식성이 떨어집니다. 다른 구성 요소에 구성 요소를 추가하는 것이 훨씬 쉽습니다. 프레임은 꽤 최종적입니다.

JPanel이 이중 버퍼링이기 때문에 캔버스에 JPanel을 사용할 수도 있습니다.

+0

gotcha. 도움을 많이 주셔서 감사합니다. – and0rsk