我正在为一个课程编写一个程序,我需要让美国国旗将旗杆缩放到国歌。我有代码,但得到一个错误,即applet找不到,即使它在那里。我正在使用eclipse。任何人都可以帮助我解决我所缺少的问题吗?
提前致谢...
代码:
@SuppressWarnings("serial")
public class Lab5b extends JApplet {
private AudioClip audioClip;
public Lab5b() {
add(new ImagePanel());
URL urlForAudio = getClass().getResource("audio/us.mid");
audioClip = Applet.newAudioClip(urlForAudio);
audioClip.loop();
}
public void start() {
if (audioClip != null) audioClip.loop();
}
public void stop() {
if (audioClip != null) audioClip.stop();
}
/** Main method */
public static void main(String[] args) {
// Create a frame
JFrame frame = new JFrame("Lab 5");
// Create an instance of the applet
Lab5b applet = new Lab5b();
applet.init();
// Add the applet instance to the frame
frame.add(applet, java.awt.BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Display the frame
frame.setSize(200, 660);
frame.setVisible(true);
}
}
@SuppressWarnings("serial")
class ImagePanel extends JPanel {
private ImageIcon imageIcon = new ImageIcon("image/us.gif");
private Image image = imageIcon.getImage();
private int y = 550;
public ImagePanel() {
Timer timer = new Timer(120, new TimerListener());
timer.start();
}
class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
increaseY();
}
}
public void increaseY() {
if (y > 0) {
y--;
repaint();
}
}
/** Draw image on the panel */
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null) {
g.fillRect(0, 0, 10, 660);
g.drawImage(image, 11, y, 160, 84, this);
}
}
}
在这里输入代码
答案 0 :(得分:1)
需要注意几点
Applets
不会以main()
方式开始执行。但是,确实如此
可以通过使用Java解释器来执行applets
如果使用main()
扩展class
,则使用Frame
方法。
拥有init()
方法很重要,因为它被调用
浏览器或applet查看器通知此applet它已经存在
加载到系统中。它总是在第一次之前调用
调用start方法。
JFrame
和JApplet
都是顶级容器而不是
将applet
添加到frame
,我宁愿创建一个对象
JPanel
的{{1}},因为它可以添加到JFrame
/ JApplet
。在你的
只需将ImagePanel
添加到顶级容器中的任何一个。
I / O Streams不为applets
提供更多空间。
applet
无法访问用户的文件
硬盘。
了解更多here