Java第五次作业_java第五次作业

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 selected = new ArrayList();

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();

}

}

效果图如下:

c2a04c39f9d35dcf0c554ded2ff5141f.png

fa68010a26317e2388dffa42588e3f90.png

8bd04ba056707310d4850febc378f09f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值