昨天在图书馆借了一本书,敲了一个例子……有图片和音乐。书上例子是:七首国歌,七面国旗,对应播放。可是我用eclipse做不出来啊……package com.flash;import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;public class ImageAudioAnimation extends JApplet{
private final static int NUMBER_OF_NATIONS=7;
private int current=0;
private ImageIcon[] icons=new ImageIcon[NUMBER_OF_NATIONS];
private AudioClip[] audioClips=new AudioClip[NUMBER_OF_NATIONS];
private AudioClip currentAudioClip;
private int[] delays=
{48000,54000,59000,54000,59000,31000,68000};
private Timer timer=new Timer(delays[0],new TimerListener());
private JLabel jlblImageLabel=new JLabel();
private JButton jbtResume=new JButton("Resume");
private JButton jbtSuspend=new JButton("Suspend");
private JComboBox jcboNations=new JComboBox(new Object[]
{"Den","Germany","China","India","Norway","UK","US"});
public ImageAudioAnimation(){
//
for(int i=0;i<NUMBER_OF_NATIONS;i++){
icons[i]=new ImageIcon(getClass().getResource(
"image/flag"+i+".gif"));
audioClips[i]=Applet.newAudioClip(
getClass().getResource("audio/anthem"+i+".mid"));
}
JPanel panel=new JPanel();
panel.add(jbtResume);
panel.add(jbtSuspend);
panel.add(new JLabel("Select"));
panel.add(jcboNations);
this.getContentPane().add(jlblImageLabel,BorderLayout.CENTER);
this.getContentPane().add(panel,BorderLayout.SOUTH);
jbtResume.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
start();
}
});
jbtSuspend.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
stop();
}
});
jcboNations.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
stop();
current=jcboNations.getSelectedIndex();
presentNation(current);
timer.start();
}
});
timer.start();
jlblImageLabel.setIcon(icons[0]);
jlblImageLabel.setHorizontalAlignment(JLabel.CENTER);
currentAudioClip=audioClips[0];
currentAudioClip.play();
}
private class TimerListener implements ActionListener{
public void actionPerformed(ActionEvent e){
current=(current+1)%NUMBER_OF_NATIONS;
presentNation(current);
}
}
private void presentNation(int index){
jlblImageLabel.setIcon(icons[index]);
jcboNations.setSelectedIndex(index);
currentAudioClip.play();
timer.setDelay(delays[index]);
}
public void start(){
timer.start();
currentAudioClip.play();
}
public void stop(){
timer.stop();
currentAudioClip.stop();
}
}
运行结果:
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
at com.flash.ImageAudioAnimation.<init>(ImageAudioAnimation.java:28)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:780)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:709)
at sun.applet.AppletPanel.run(AppletPanel.java:363)
at java.lang.Thread.run(Thread.java:619)文件夹和文件命名也是按照书上建立的……
求指教
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;public class ImageAudioAnimation extends JApplet{
private final static int NUMBER_OF_NATIONS=7;
private int current=0;
private ImageIcon[] icons=new ImageIcon[NUMBER_OF_NATIONS];
private AudioClip[] audioClips=new AudioClip[NUMBER_OF_NATIONS];
private AudioClip currentAudioClip;
private int[] delays=
{48000,54000,59000,54000,59000,31000,68000};
private Timer timer=new Timer(delays[0],new TimerListener());
private JLabel jlblImageLabel=new JLabel();
private JButton jbtResume=new JButton("Resume");
private JButton jbtSuspend=new JButton("Suspend");
private JComboBox jcboNations=new JComboBox(new Object[]
{"Den","Germany","China","India","Norway","UK","US"});
public ImageAudioAnimation(){
//
for(int i=0;i<NUMBER_OF_NATIONS;i++){
icons[i]=new ImageIcon(getClass().getResource(
"image/flag"+i+".gif"));
audioClips[i]=Applet.newAudioClip(
getClass().getResource("audio/anthem"+i+".mid"));
}
JPanel panel=new JPanel();
panel.add(jbtResume);
panel.add(jbtSuspend);
panel.add(new JLabel("Select"));
panel.add(jcboNations);
this.getContentPane().add(jlblImageLabel,BorderLayout.CENTER);
this.getContentPane().add(panel,BorderLayout.SOUTH);
jbtResume.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
start();
}
});
jbtSuspend.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
stop();
}
});
jcboNations.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
stop();
current=jcboNations.getSelectedIndex();
presentNation(current);
timer.start();
}
});
timer.start();
jlblImageLabel.setIcon(icons[0]);
jlblImageLabel.setHorizontalAlignment(JLabel.CENTER);
currentAudioClip=audioClips[0];
currentAudioClip.play();
}
private class TimerListener implements ActionListener{
public void actionPerformed(ActionEvent e){
current=(current+1)%NUMBER_OF_NATIONS;
presentNation(current);
}
}
private void presentNation(int index){
jlblImageLabel.setIcon(icons[index]);
jcboNations.setSelectedIndex(index);
currentAudioClip.play();
timer.setDelay(delays[index]);
}
public void start(){
timer.start();
currentAudioClip.play();
}
public void stop(){
timer.stop();
currentAudioClip.stop();
}
}
运行结果:
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
at com.flash.ImageAudioAnimation.<init>(ImageAudioAnimation.java:28)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:780)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:709)
at sun.applet.AppletPanel.run(AppletPanel.java:363)
at java.lang.Thread.run(Thread.java:619)文件夹和文件命名也是按照书上建立的……
求指教
import java.awt.*;public class Love extends JPanel { @Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g; // r = a * (1 - sin(theta));
int width = getWidth();
int height = getHeight();
double r, x, y;
double θ; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.fillRect(0, 0, width, height);
g2d.setColor(Color.MAGENTA);
g2d.translate(width / 2, height / 4); for (int a = 0; a <= 90; ++a) {
for (int angle = 0; angle <= 90; angle += 1) {
θ = Math.PI / 45 * angle; // 0-2PI r = a * (1 - Math.sin(θ)) * 1.4;
x = r * Math.cos(θ) * Math.sin(Math.PI / 45 * a * 1.5);
y = r * Math.sin(θ); g2d.fillOval((int)x, -(int)y, 2, 2);
g2d.fillOval((int)x, -(int)y, 1, 1);
} }
} private static void createGuiAndShow() {
JFrame frame = new JFrame("Love"); frame.getContentPane().add(new Love()); // Set frame's close operation and location in the screen.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
} public static void main(String[] args) {
createGuiAndShow();
}
}
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;
import java.util.ArrayList;
import java.util.List;import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;import com.sun.awt.AWTUtilities;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;public class FlowerRain extends JFrame { private static final long serialVersionUID = -8037287523655159012L; private int num = 99;// 花朵数量
private int speed = 3;// 下降速度
private boolean flag = true;
private List<JLabel> labelList = new ArrayList<JLabel>(num);
private Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
private ImageIcon icon = new ImageIcon(ImageIO.read(this.getClass().getResourceAsStream("/flower.gif")));// 花朵图片 public FlowerRain() throws Exception { getContentPane().setLayout(null);
setTitle("漫天花雨");
setSize(screenSize);
setResizable(false);
setUndecorated(true);
setAlwaysOnTop(true);
setLocationRelativeTo(null);
setIconImage(icon.getImage());
AWTUtilities.setWindowOpaque(this, false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 防止最小化
addWindowStateListener(new WindowStateListener() {
public void windowStateChanged(WindowEvent e) {
if (getState() == 1) {
setState(0);
}
}
}); // Ctrl + E 关闭窗口
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_E) {
dispatchEvent(new WindowEvent(FlowerRain.this, WindowEvent.WINDOW_CLOSING));
}
}
}); addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
flag = false;// 将线程循环标志置为false
}
}); for (int i = 0; i < num; i++) {
JLabel jlbl = new JLabel(icon);
jlbl.setSize(20, 20);
jlbl.setLocation(random(screenSize.width), random(screenSize.height)); labelList.add(jlbl);
add(jlbl);
} } public void move() {
new Thread() {
public void run() {
while (flag) {
try {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < labelList.size(); i++) {
JLabel jlbl = labelList.get(i);
Point location = jlbl.getLocation(); jlbl.setLocation(location.x + (i % 5 - 2), location.y + speed); location = jlbl.getLocation();
if (location.y >= screenSize.height || location.x <= 0 || location.x >= screenSize.width) {
jlbl.setLocation(random(screenSize.width), 0);
}
}
}
});
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
}
};
}.start(); } public void start() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
setVisible(true);
move();
} catch (Exception e) {
e.printStackTrace();
}
}
});
} public int random(int max) {
return (int) (Math.random() * max);
} public int random(int min, int max) {
return random(max - min) + min;
} public static void main(String[] args) throws Exception {
new FlowerRain().start();
}
}
苦逼的我还是单身
1. import com.sun.awt.AWTUtilities; 这个包找不到 能给我一个吗
2.花private ImageIcon icon = new ImageIcon(ImageIO.read(this.getClass().getResourceAsStream("/flower.gif")换的是这个gif吧 换完我应该放在哪个位置
3.如果不安装MyEclipse可以看到效果吗 毕竟惊喜不该一定要装各种软件吧...