2013-05-06 4 views
0

처음 포스터와 분명한 n00b 자바 학생. 나는이 일을 영원히 계속하고 있으며, 지난 이틀 동안 인터넷을 수색하고 아무 것도 시도하지 않는다. 이것은 원래 JFrame을 사용하는 프로그램이었고 애플릿으로 변환해야합니다. 코드는 오류없이 잘 컴파일되고 애플릿을 시작하지만 그게 전부입니다. 나는 회색 창을 띄우고 "Applet Started"라고 말합니다. 미소를 찌푸린 얼굴로 바꾸고 타이머로 다시 되돌아 오는 그래픽을 보여 주기로되어 있습니다. 나는 숙제를 끝내야 할 사람을 찾고 있지 않습니다. (당신이 믿지 않는 한) 저는 약간의 지침이 필요합니다.JApplet이 시작되지만 초기화되지 않습니다

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.JApplet; 
import javax.swing.JPanel; 
import javax.swing.Timer; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import java.awt.Dimension; 
public class GAPanel extends JApplet { 

public void init() { 

    System.out.println("In init"); 
    this.setSize(new Dimension(600, 600)); 
    setLayout(new BorderLayout()); 

} 

protected class GAPane extends JPanel implements ActionListener { 


public final int FACE_FROWN = 1; 
public final int FACE_SMILE = 2;  
private int face = FACE_SMILE; 
private Timer timer = null; 
{ 
    timer = new Timer(1000, this); 
    timer.start(); 
} 

public void paintComponent(Graphics paint) { 

    super.paintComponents(paint); 
    System.out.println("In paint"); 
    this.setBackground(java.awt.Color.blue); 
    Graphics2D betterpaint = (Graphics2D) paint; 
    betterpaint.drawOval(300, 300, 100, 100); 

    paint.setColor(Color.yellow); 
    betterpaint.fillOval(300, 300, 100, 100); 

    paint.setColor(Color.black); 
    betterpaint.drawOval(325, 325, 10, 10); 

    paint.setColor(Color.white); 
    betterpaint.fillOval(325, 325, 10, 10); 
    paint.setColor(Color.black); 
    betterpaint.drawOval(365, 325, 10, 10); 
    paint.setColor(Color.white); 
    betterpaint.fillOval(365, 325, 10, 10); 
    paint.setColor(Color.black); 
    betterpaint.fillOval(329, 329, 3, 3); 
    betterpaint.fillOval(368, 329, 3, 3); 
    paint.setColor(Color.black); 


    switch (face){ 
     case FACE_FROWN: 
     betterpaint.drawArc(325, 350, 50, 45, 0, 180); 
      break; 
     case FACE_SMILE: 
     betterpaint.drawArc(325, 325, 50, 50, 200, 140); 
      break; 
    } 

} 


public void actionPerformed(ActionEvent ae) { 

    face = face == FACE_FROWN ? FACE_SMILE : FACE_FROWN; 

    this.repaint(); 

     } 
    } 
} 
+0

* "이것은 원래이었다 JFrame의를 사용하여 프로그램과 나는 애플릿으로 변환해야합니다."* 난에서 볼 코드는 'JApplet'을 의미하지만 ... 왜? 일반적으로 [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info)를 사용하여 링크에서 프레임을 시작하는 것이 좋습니다. –

+1

변경 public void paintComponent (그래픽 페인트) { super.paintComponents (페인트);'public void paintComponent (그래픽 페인트) { super.paintComponent (페인트);'(복수/단수 형태 사용) ! –

답변

1

당신의 JApplet에의 init() 설정을 무시하고는 종류의 스파 스 :

public void init() { 
    System.out.println("In init"); 
    this.setSize(new Dimension(600, 600)); 
    setLayout(new BorderLayout()); 
} 
당신은 당신의 JApplet에의 contentPane에 GUI를 추가로 정말 유용한 아무것도하지 않는 사실

, 그래서 의미가 그 아무것도 표시되지 않습니다. 여러분이 JPanel을 만들고 그것을 init() 메서드의 애플릿에 추가하는 것이 좋습니다. 애플릿 튜토리얼을 끝내지 않았다면, 여기에 설명 된대로 자습서를 작성하는 것이 좋습니다.

+0

도움을 주셔서 감사합니다. this.add (새 GAPane()); 내 init 메소드에서이를 수정했습니다. setLayout (새로운 BorderLayout()); 거기에 전혀 있지 말았어야 했어. 결승 주간 ... 모든 것이 흐릿 해졌습니다. 건배! –

0

JFrames와 JApplet은 서로 다른 유틸리티이지만 실제로 초기화하는 데 필요한 많은 기본 기능을 공유합니다. 내가 볼 수 있듯이 스마일리 페이스 코드를 포함하는 JPanel을 만들었지 만, 실제로 그것을 애플릿의 콘텐츠 창으로 지정하지 않았습니다. 이것은 아마도 회색 화면을 보게되는 이유 일 것입니다. 애플릿이 작성되었지만 내용으로 채워지지 않은 것입니다.

setContentPane(new GAPane()); 

트릭을해야한다고 생각합니다. 다른 것들이 많이 있지만, JApplet을 이해하지 않고 JFrame으로 전환했다면이 코드를 사용할 수 있다고 생각합니다. 이 오라클 페이지를 확인, 너무 멋진 문서와 몇 가지 예를 가지고 :

http://docs.oracle.com/javase/tutorial/uiswing/components/applet.html

관련 문제