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();
}
}
效果图如下:
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();
}
}
效果图如下:
相关文章推荐
- 解决Eclipse项目有红感叹号的方法以及clean完没有自动生成R文件的方法
- IntelliJ IDEA:Getting Started with Spring MVC, Hibernate and JSON实践
- JAVA反射机制(及反射调用的性能简测)
- Java基础学习(三)—面向对象(上)
- java 三种调用机制(同步、回调、异步)
- (转)Eclipse快捷键大全,导包快捷键:ctrl+Shift+/
- <java API源码初体验>3---collection集合之HashMap原理分析
- Java设计模式--------建造者模式之进阶
- 20145210 《Java程序设计》第07周学习总结
- 20145113 实验二 Java面向对象程序设计
- Java23个设计模式的简明教程
- JavaEE--prepareStatement后面的setString()方法是为何?
- java语法基础-程序流程控制-选择结构-switch语句
- Struts2中OGNL概念和原理详解
- Java线程池的分析和使用
- JAVA设计模式之单例模式
- JAVA 自定义泛型
- Java语法基础--运算
- java.线程的五个状态与之间的切换
- 深入剖析Java中的装箱和拆箱