我如何在此程序中调用此Applet?

时间:2014-03-01 04:27:58

标签: java swing applet joptionpane javasound

我正在使用JOptionPane创建一个单独调用和执行程序的菜单(不需要applet和菜单,我只是为了让它变得更好)。我试图调用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;
      }
}

2 个答案:

答案 0 :(得分:2)

您正在尝试在类上调用实例方法 - 不要这样做,而是在实例上调用它 - 从类中创建一个对象,然后调用该方法。

如,

不是:

MyClass.someMethod();

而是

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

无论如何,这不是你使用applet的方式。相反,他们应该在HTML页面或applet加载器中使用。而是创建一个JFrame或JDialog并显示它。

答案 1 :(得分:0)

  

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

好吧,不要那样做。

它只是包含一个播放剪辑的按钮。

Clip可以播放,如Java Sound info. page中所示。

使用JButton按钮,然后添加How to Write an Action Listener中显示的ActionListener


暂且不说。基于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 Docs接着提到:

  

从JDK 版本1.1开始,应该在触发操作事件的组件上将此组件注册为ActionListener

不要在其上建立代码。