一个小程序 运行后 我看不懂这个控制台的提示 该怎么改啊?求详细。

mynameis7023 2012-10-31 07:57:08
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)
...全文
207 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmyangym 2012-10-31
  • 打赏
  • 举报
回复
不用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();
}
}
mynameis7023 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

list = new JList(str);
str没赋过值,为null.
[/Quote]
求详细
mynameis7023 2012-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

Java code
list = new JList(str);

ListModel str;为null,没有被初始化,就使用了。
[/Quote]

能不能告诉我一下 该怎么初始化啊
nmyangym 2012-10-31
  • 打赏
  • 举报
回复
list = new JList(str);
str没赋过值,为null.
雪馨 2012-10-31
  • 打赏
  • 举报
回复
list = new JList(str);

ListModel str;为null,没有被初始化,就使用了。
Coding-lover 2012-10-31
  • 打赏
  • 举报
回复
主类名和文件名要相同啊 !!!
mynameis7023 2012-10-31
  • 打赏
  • 举报
回复
求大神指导~

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧