0
미로 보드로 이동하는 플레이어와 함께 미로를 만들고 싶습니다. 나는 2 개의 서브 클래스 인 Canvas
을 생성한다. 미로를 그리는 첫 번째 선수와 선수를 그리는 secend. 내가 Paint
의 메소드를 오버라이드 (override) Canvas
의 모든 서브 클래스에서 그렇게 basicly은 다음과 같습니다Canvas의 서브 클래스가 하나의 쉘에
public class MazeCanvas extends Canvas {
// override
public void paint(Graphics win) {
}
}
public class PlayerCanvas extends Canvas {
// override
public void paint(Graphics win) {
}
}
public class ShellClass implements ActionListener {
public void run() {
Display display = new Display();
Shell shell = new Shell(display);
shell.open();
Button goButton = new Button(shell, SWT.PUSH);
goButton.addActionListener(shell);
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == goButton) {
//here I want to repaint the obj of PlayerCanvas ;
}
}
그래서 .. 내 질문은 : 무엇을 내가 Canvas
의 두 서브 클래스가 될 것이라고 위해해야 할 Shell
ShellClass
에 설정 하시겠습니까? 내가 Canvas
를 기본 사용하는 경우 내가 쓰기 :
Canvas canvas = new Canvas(shell, SWT.MAX);
하지만 나는 그것이 Canvas
의 서브 클래스 인 경우에 작성해야합니까? 미리 감사드립니다.
이 시도했지만 오류가 발생했습니다 '생성자 캔버스 (합성, int) 정의되지 않았습니다' – URL87
그것은 정의됩니다 : http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc. isv/reference/api/org/eclipse/swt/widgets/Canvas.html # Canvas (org.eclipse.swt.widgets.Composite, % 20int) 그리고 여러분의 질문은이 생성자를 호출 할 수 있음을 보여줍니다. 그래서 나는이 오류가 어떻게 나타날 수 있는지 보지 못했다. –
"import java.awt.Canvas"를 "import org.eclipse.swt.widgets.Canvas"로 변경하고 이제는 작동합니다! 감사 ! – URL87