2014-03-01 65 views
0

我使用JOptionPane來製作一個菜單,分別調用和執行程序(小程序和菜單不是必需的,我只是爲了使它更好)。我試圖調用init()方法,但它說「非靜態方法init()不能從靜態語句中引用」。小程序來播放一首歌曲如何在這個程序中調用這個Applet?

代碼:

的第一個程序: *

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應用程序中嵌入一個applet;要麼; 「非靜態方法的含義不能從靜態語句引用」等等 –

回答

2

你試圖調用一個類的實例方法 - 不要那樣做,但我nstead在實例上調用它 - 從類中創建一個對象,然後調用該方法。

例如,

這不是:

MyClass.someMethod(); 

而是

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

而不顧,這是不是你如何使用小程序。相反,他們應該用在HTML頁面或小程序加載器中。而是創建一個JFrame或JDialog並顯示它。

+0

我將如何使用它的一個jframe – user3350704

0

如何在此程序中調用此Applet?

那麼,不要那樣做。

它所做的只是包括一個播放剪輯的按鈕。

A Clip可以在Java Sound info. page中看到。

使用JButton作爲按鈕,並添加ActionListener,如How to Write an Action Listener所示。


另一方面。這Applet基於代碼太舊,使用過時很久以前的方法:

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) 

的Java文檔去提:

隨着JDK 1.1版的,應該註冊該組件爲ActionListener在引發行動事件的組件上。

請勿在其上編寫代碼。