학교용 브레이크 아웃 게임을 프로그래밍해야하며 문제가 발생했습니다. 내 2D 수치는 페인트해야하지만 볼 수는 없습니다.애플릿에서 스윙하지 않음
이것은 내 애플릿입니다. test()는 아래에 링크 할 JPanel입니다.
public class Gamefield extends Applet{
test t;
@Override
public void init() {
t = new test();
setSize(1600, 900);
Frame frame = (Frame)this.getParent().getParent();
frame.setTitle("Breakout");
add(t);
}
}
여기는 repaint()를 호출하는 내 JPanel입니다.
public class test extends JPanel implements Runnable {
public test(){
setSize(1600,900);
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
while(true){
System.out.println("a");
try{
repaint();
Thread.sleep(1000/60);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void paintComponent(Graphics g) {
System.out.println("draw");
super.paintComponents(g);
g.setColor(Color.BLACK);
g.drawOval(500,500,100,100);
g.fillRect(100,100,100,100);
}
}
나는 누군가가 나를 도울 수 있기를 바랍니다. 나는 그것을 고치려고 무엇을 할 수 있는지 모른다.
1) 애플릿을 코딩하는 이유는 무엇입니까? 교사가 지정했기 때문에 [CS 교사가 ** Java 애플릿 교육 **을 중단해야하는 이유] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should?hl=ko)를 참조하십시오. -stop-teaching-java-applets /)를 사용합니다. Swing 애플릿은'javax.swing.JApplet'입니다. 2)보다 빨리 도움을 받으려면 [MCVE] (http://stackoverflow.com/help/mcve) (최소한의 완전한 검증 가능 예제)를 게시하십시오. –
Swing에서'Timer'를 사용하여'repaint() '를 호출하는 것이 더 쉽습니다 .. –
그래도 여전히 사각형이 보이지 않습니다 .. 애플릿 때문에요? JFrame으로 변환해야합니까? –