您的位置:首页 > 编程语言 > Java开发

java第五次作业

2016-04-15 22:43 369 查看
参考老师给我们的程序soundplayer,完成了以下操作

1.将指定目录下的所有文件显示到列表框(JList)组件中

2.增加下拉式组合框(JComboBox),实现对列表显示的文件按照文件扩展名进行筛选

代码如下:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.swing.*;
import javax.swing.border.EmptyBorder;

public class JListTest extends JFrame {
private static final String music = "音乐";
private JFrame frame;
private JList fileList;
private JLabel bq, bq2;
private static final String VERSION = "Version 3.1.0";

public JListTest() {

String[] FileNames = findFiles(music, null);
makeFrame(FileNames);
frame.pack();
frame.setVisible(true);
frame.setSize(280, 360);
frame.setLocation(550, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private String[] findFiles(String dirName, String suffix) {
File dir = new File(dirName);
if (dir.isDirectory()) {
String[] allFiles = dir.list();
if (suffix == null) {
return allFiles;
} else {
List<String> selected = new ArrayList<String>();
for (String filename : allFiles) {
if (filename.endsWith(suffix)) {
selected.add(filename);
}
}
return selected.toArray(new String[selected.size()]);
}
} else {
System.out.println("Error: " + dirName + " must be a directory");
return null;
}
}

private void makeFrame(String[] audioFiles) {

frame = new JFrame(" 列表显示");
setDefaultCloseOperation(EXIT_ON_CLOSE);

JPanel contentPane = (JPanel) getContentPane();
contentPane.setBorder(new EmptyBorder(6, 10, 10, 10));
bq = new JLabel(VERSION);
bq2 = new JLabel(" 分类查找:");
frame.add(bq2, BorderLayout.NORTH);
frame.add(bq, BorderLayout.SOUTH);

contentPane.setLayout(new BorderLayout(8, 8));

JPanel leftPane = new JPanel();
{
leftPane.setLayout(new BorderLayout(8, 8));

String[] formats = { "all formats", ".wav", ".au", ".aif",".txt",".fla",".doc" };

JComboBox formatList = new JComboBox(formats);
formatList.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JComboBox cb = (JComboBox) e.getSource();
String format = (String) cb.getSelectedItem();
if (format.equals("all formats")) {
format = null;
}
fileList.setListData(findFiles(music, format));

}});
leftPane.add(formatList, BorderLayout.NORTH);
fileList = new JList(audioFiles);
fileList.setForeground(new Color(140, 171, 226));
fileList.setBackground(new Color(0, 0, 0));
fileList.setSelectionBackground(new Color(87, 49, 134));
fileList.setSelectionForeground(new Color(140, 171, 226));
JScrollPane scrollPane = new JScrollPane(fileList);
scrollPane.setColumnHeaderView(new JLabel("files list"));
leftPane.add(scrollPane, BorderLayout.CENTER);
}
contentPane.add(leftPane, BorderLayout.CENTER);
frame.add(contentPane);
}

public static void main(String[] args) {
// TODO Auto-generated method stub
new JListTest();

}

}

效果图如下:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: