2014-03-01 3 views
0

프로그램을 별도로 호출하고 실행하는 메뉴를 만들기 위해 JOptionPane을 사용하고 있습니다 (애플릿과 메뉴는 필요하지 않습니다. init() 메서드를 호출하려고했지만 "비 정적 메서드 init()은 정적 명령문에서 참조 할 수 없습니다." 애플릿은 노래를 재생하는 데 사용됩니다이 프로그램에서이 애플릿을 어떻게 호출합니까?

코드 :

첫 번째 프로그램 : *

import javax.swing.JOptionPane; 
    public class MexicoProject 
    { 
     public static void main(String[] args) 
     { 
     String[] choice = {"History", "Trivia", "Intro", "Anthem", "Quit"}; 
     String Menu; 
    do 
     { 
      Menu = (String)JOptionPane.showInputDialog(null, "Welcome, this program will teach you about the history of Mexico.\nPick one of the options below.", 
       "Mexico History", JOptionPane.QUESTION_MESSAGE, null, choice, choice[0]); 

      if (Menu == null) 
       JOptionPane.showMessageDialog(null, "Pick something!"); 
      else 
      { 
       switch (Menu) 
       { 
        case "History": 
         MexicoHistory.History(); 
         break; 
        case "Trivia": 
         Quiz(); 
         break; 
        case "Intro": 
         FrenchIntro.Intro(); 
         break; 
        case "Anthem": 
         MexicoAnthem.Init(); 
         break; 
        case "Quit": 
         JOptionPane.showMessageDialog(null, "Goodbye!"); 
         break; 
        default: 
         JOptionPane.showMessageDialog(null, "Something went wrong! Try again!"); 
       } 
      } 
     } while (Menu != "Quit"); 

    } 
    public static void History() 
    { 
    } 
    public static void Quiz() 
    { 
    } 
}* 

번째 프로그램 : 당신이하려는

import java.applet.*; 
import java.net.*; 

public class MexicoAnthem extends Applet 
    { 
    Button button; 

     public void Init() 
     { 
       BorderLayout layout = new BorderLayout(); 
       setLayout(layout); 
       Font font = new Font("TimesRoman", Font.BOLD, 32); 
       setFont(font); 
       button = new Button("Play Sound"); 
       add("Center", button); 
       resize(250, 250); 
     } 

     public boolean action(Event evt, Object arg) 
     { 
       if (evt.target instanceof Button) 
       { 
        URL codeBase = getCodeBase(); 
        play(codeBase, "MexicanNationalAnthem.wav"); 
       } 
     return true; 
     } 
} 
+0

"이 애플릿을이 프로그램에 호출하십시오"....정말로 사람들이 당신의 제목에서 의미있는 것을 얻을 것이라고 생각합니까? –

+0

그게 무슨 뜻입니까? – user3350704

+0

제목이 무엇을 의미합니까? 문제의 의미있는 요약을 제공하는 의미있는 제목을주십시오. 예 : 애플릿을 Swing 어플리케이션에 임베드하는 방법. 또는; "정적이 아닌 메서드를 정적 문에서 참조 할 수 없음"등의 의미 –

답변

2

클래스에 인스턴스 메서드를 호출 - 그렇게하지 마라. nstead 인스턴스에서 호출 - 클래스에서 객체를 만든 다음 메서드를 호출합니다.

예를 들어,

이 아니다 :

MyClass.someMethod(); 

하지만 애플릿을 사용하는 방법이 아니라

MyClass myInstance = new MyClass(); 
myInstance.someMethod(); 

와 관계없이이 없습니다. 오히려 HTML 페이지 나 애플릿 로더에서 사용되기로되어 있습니다. 대신 JFrame 또는 JDialog를 만들고 표시하십시오.

+0

어떻게 jframe을 사용합니까? – user3350704

0

이 프로그램에서이 애플릿을 어떻게 호출합니까?

글쎄, 그러지 마라.

모든 것은 클립을 재생하는 버튼을 포함합니다.

ClipJava Sound info. page에서 보는 바와 같이 재생할 수 있습니다.

단추에 JButton을 사용하고 How to Write an Action Listener에 표시된대로 ActionListener을 추가하십시오.


제쳐두고.

I:\projects\numbered\all\AllClasses\src\MexicoAnthem.java:30: warning: 
    [deprecation] action(Event,Object) in Component has been deprecated 
     public boolean action(Event evt, Object arg) 

는 자바 문서 언급로 이동 : 그 Applet 기반 코드는 오래 전에 사용되지 않는 방법을 사용하고 너무 오래

을 JDK 버전 1.1을ActionListener으로이 구성 요소를 등록해야합니다 액션 이벤트를 발생시키는 컴포넌트.

기본 코드를 사용하지 마십시오.