本帖最后由 mynameis7023 于 2012-10-31 21:29:18 编辑

解决方案 »

  1.   

    list = new JList(str);
    ListModel str;为null,没有被初始化,就使用了。
      

  2.   

    list = new JList(str);
    str没赋过值,为null.
      

  3.   

    不用ListModel,直接字符串数组来构造JList对象。
    参考一下:
    import java.awt.Component;
    import java.io.File;
    import java.awt.*;
    import javax.swing.*;
    public class Gundong
    {
    /**
    * @param args
    */
    private JPanel p1;
    private JLabel AudioFiles;
    private JList list;
    private JFrame frame;
    private JScrollPane test;
    private JPanel p2;
    //private ListModel str; //没有实现类来实例化,取消。 public Gundong()
    {
    makeFrame();
    frame.setSize(230,400);//设置框架大小。
    //GetFiles(); //这不要了.
    } public void makeFrame()
    {
    frame = new JFrame(); //新建框架!
    // AudioFiles = new JLabel("播放列表");
    p1 = new JPanel();
    // p2 = new JPanel();
    //list = new JList(str);
    list = new JList(GetFiles()); //这构造JList()对象换成字符串数组了.
    test = new JScrollPane(list);
    p1.add(test);
    frame.add(p1,BorderLayout.CENTER);
    // p2.add(AudioFiles);
    // frame.add(p2,BorderLayout.NORTH);
    //frame.setResizable(false);//设置框架大小不可调节!
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置右上角关闭而非隐藏。
    frame.setLocationRelativeTo(null);//设置居中显示!  
    frame.pack();
    frame.setVisible(true); //设置可见!
    } public String[] GetFiles()
    {
    File file=new File("歌曲");
    //File file=new File("d:\\myjava");//-----我测试用了。
    String str[];
    str=file.list();
    //for(int i=0;i<str.length;i++);
    //{
    // System.out.println(test[i]);
    // } 
    return str;
    }
    public static void main(String[] args) 
    {
    // TODO 自动生成的方法存根
    new Gundong();
    }
    }