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);
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("歌曲");
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();
}
}
运行 提示 :
Exception in thread "main" java.lang.IllegalArgumentException: dataModel must be non null
at javax.swing.JList.<init>(Unknown Source)
at Gundong.makeFrame(Gundong.java:33)
at Gundong.<init>(Gundong.java:22)
at Gundong.main(Gundong.java:60)
------解决方案--------------------------------------------------------
主类名和文件名要相同啊 !!!
------解决方案--------------------------------------------------------
- Java code
list = new JList(str);
------解决方案--------------------------------------------------------
list = new JList(str);
str没赋过值,为null.
------解决方案--------------------------------------------------------
不用ListModel,直接字符串数组来构造JList对象。
参考一下:
- Java code
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(); }}