昨天在图书馆借了一本书,敲了一个例子……有图片和音乐。书上例子是:七首国歌,七面国旗,对应播放。可是我用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)文件夹和文件命名也是按照书上建立的……
求指教

解决方案 »

  1.   

    给你一个:package com.tur.demo;import javax.swing.*;
    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();
        }
    }
      

  2.   

    知道问什么运行不起来吗,是因为你文件路径不对,记得放在src目录下,如何一定要有相对应的文件,这样就可以运行起来。
      

  3.   

    很简单,JAVA调用播放器,播放一段影片,贵在影片的质量如何。
      

  4.   

    java.lang.NullPointerException,回头吧,骚年.... 你女朋友满心期待着看你的swing的时候居然TMD除了个NullPointerException,然后你就慌了,只顾着Debug,Debug好了,你女友跟人跑了~~~~
      

  5.   

    给你一个package com.shaw.demo;
    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();
    }
    }
      

  6.   

    你做个东西送给他 你确定他电脑上有jre?能运行吗  
      

  7.   

    送女生JAVA程序?撸主你没病吧!除非您的女朋友是男的。
      

  8.   

    正解,,,lz你女朋友机上没装jre吧,,,要不拷过去双击打开竟然是个压缩包的样子
      

  9.   

    呵呵。。楼主是个好男人啊不过我想的是,你送你女朋友,还得给你女朋友的机器装个JDK?
      

  10.   

    用android做个还现实点,当然要是android系统的手机才行。。
      

  11.   

    写个程序,换成RMB,然后买件礼物送人家
    苦逼的我还是单身
      

  12.   

    看看这个相册如何:http://3.callmewhy.sinaapp.com/
      

  13.   

    可以,把那个图片换下就好了新手请教下
    1. import com.sun.awt.AWTUtilities; 这个包找不到 能给我一个吗 
    2.花private ImageIcon icon = new ImageIcon(ImageIO.read(this.getClass().getResourceAsStream("/flower.gif")换的是这个gif吧 换完我应该放在哪个位置 
    3.如果不安装MyEclipse可以看到效果吗 毕竟惊喜不该一定要装各种软件吧...