我正在使用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;
}
}
答案 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
。
不要在其上建立代码。