目录
1. 需求分析
2. 数据库建立
3. 需求实现
* 数据库的连接
* 数据库功能的实现
* gui的建立
如果需要源码,可以到下面的连接下载
https://download.csdn.net/download/AJI12/20401417?spm=1001.2014.3001.5501
需求分析
图形化界面(GUI),编写一个文本文件信息统计软件
(1)显示打开文件的基本信息(文件名、路径、文件大小、最后修改日期)
(2)显示文件内容统计信息(行、字/单词数)
(3)显示文件内容
(4)按照文件大小或最后修改时间排序
(5)按照文件名或者文件内容包含关键字模糊查询
1. 显示打开文件基本信息:显示查询到的文件基本信息如:(文件名、路径、文件大小、最后修改日期)等,将其显示到文本框中,用户需要将文件的绝对路经输入到系统中,然后点击查询。
2. 显示文件内容统计信息:显示查询到的文件基本信息如:(行、字/单词数)等
将其显示到文本框中,用户需要将文件的绝对路经输入到系统中,然后点击查询。
3. 显示文件内容:将文件内容显示到系统的文本框中。用户需要将文件的绝对路经输入到系统中,然后点击显示。
4. 按照文件大小或最后修改时间排序:用户点击排序,系统将调用数据库对里面的数据进行排列,通过冒泡排序将文件按大小从小到大排列,并以List的形式输出到JFrame的文本框中。
5. 按照文件名或者文件内容包含关键字模糊查询:用户点击按文件名查询,然后输入要查询的文件名,系统将调用数据库对里面的数据进行查找,通过对数据库中的数据进行查找,若找到将输出到文本框中。
数据库的建立
由于题目需求只有一个按文件名查询文件基本信息和排序
因此我们只需建立一个表BaseInfo:
CREATE TABLE `baseinfo` (
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件名',
`path` varchar(255) DEFAULT NULL COMMENT '路径名',
`size` double DEFAULT NULL COMMENT '文件大小',
`LastData` varchar(255) DEFAULT NULL COMMENT '最后修改日期',
PRIMARY KEY (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
需求的实现
* 数据库的连接
* 数据库功能的实现
* gui的建立
数据库的连接
这里我使用的数据库是mysql8.0,连接工具为Jdbc和utils,具体jar包大家可以到官网下载。
JdbcUtils.java
package com.utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.utils.JdbcUtils;
public class JdbcUtils {
/**
* 1. 定义成员变量DataSourse
*/
private static DataSource ds;
static {
try {
//1. 加载配置文件
Properties pro = new Properties();
pro.load(JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
//2.获取DataSource
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取资源
* @return ds.getConnection()
*/
public static Connection getConnection() throws SQLException{
return ds.getConnection();
}
/**
* 释放资源
*/
public static void close(ResultSet rs, Statement stmt, Connection conn){
if (rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 获取连接池方法
* @return ds
*/
public static DataSource getDataSource(){
return ds;
}
}
druid.properties
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///db6
username=root
password=1234
initialSize=5
maxActive=10
maxWait=3000
数据库功能的实现
这里使用的是JDBC和JDBCTemplate实现对数据库的操作
具体jar大家可以到网站上下载
FileInfoAdd.java
对数据库表的数据实例化
package com.domain;
public class FileInfoAdd {
private String name;
private String path;
private Double size;
private String lastData;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public Double getSize() {
return size;
}
public void setSize(Double size) {
this.size = size;
}
public String getLastData() {
return lastData;
}
public void setLastData(String lastData) {
this.lastData = lastData;
}
@Override
public String toString() {
return "FileInfoAdd [ name=" + name + ", path=" + path + ", size=" + size + ", lastData="
+ lastData + "]";
}
}
SelectInfo.java
通过文件地址查询文件基本信息
package com.domain;
import java.io.File;
import java.sql.Date;
import java.text.SimpleDateFormat;
public class SelectInfo {
public static void showFileMessage(String fileName) {
//根据指定路径创建一个File对象file
File file = new File(fileName);
//获取该File对象的名字
String name = file.getName();
System.out.println("文件名为:"+ name);
//获取该File对象的相对路径
String path = file.getPath();
System.out.println("路径为:"+ path );
//获取此文件的最后修改时间
Date date = new Date(file.lastModified());
//设置时间格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
//将获取的时间转换成设置的格式
String dateTime=df.format(date);
//输出此文件的最后修改时间
System.out.println("此文件的最后修改时间为:"+dateTime );
}
/**
* 获取文件长度
* @param file
* @return size
*/
public static long getFileSize(String fileName) {
File file = new File(fileName);
return file.length();
}
/**
* 获取文件名
* @param fileName
* @return fileName
*/
public static String getFileName(String fileName) {
File file = new File(fileName);
return file.getName();
}
/**
* 获取文件路径
* @param file
* @return path
*/
public static String getFilePath(String fileName) {
File file = new File(fileName);
return file.getPath();
}
/**
* 获取文件路径
* @param file
* @return dataTime
*/
public static String getLastData(String fileName) {
File file = new File(fileName);
//获取此文件的最后修改时间
Date date = new Date(file.lastModified());
//设置时间格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
//将获取的时间转换成设置的格式
String dateTime=df.format(date);
//输出此文件的最后修改时间
return dateTime;
}
}
JdbcTamplateDemo.java
package com.jdbcTemplate;
import java.util.List;
import java.util.Map;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import com.domain.FileInfoAdd;
import com.domain.SelectInfo;
import com.utils.JdbcUtils;
public class JdbcTamplateDemo {
private static JdbcTemplate template = new JdbcTemplate(JdbcUtils.getDataSource());
/**
* 将信息添加到数据库
* @param fileName
*/
public static void addData(String fileName) {
String name = SelectInfo.getFileName(fileName);
String path = SelectInfo.getFilePath(fileName);
long size = SelectInfo.getFileSize(fileName);
String lastData = SelectInfo.getLastData(fileName);
String sql = "insert into baseinfo (name,path,size,lastdata) values (?,?,?,?)";
template.update(sql,name,path,size,lastData);
}
/**
* 按文件名查询
*/
public static void showData(String sName) {
String sql = "select * from baseinfo where name=?";
Map<String, Object> map = template.queryForMap(sql,sName);
System.out.println(map);
}
/**
* 排序
*/
public static void sort() {
String sql = "select * from baseinfo order by size";
List<FileInfoAdd> list = template.query(sql,new BeanPropertyRowMapper<FileInfoAdd>(FileInfoAdd.class));
for (FileInfoAdd emp:list){
System.out.println(emp);
}
}
/**
* 设置jTable的行内容
* @return hang
*/
public static String[] gethang(String fileName) {
String[] hang = new String[4];
String sql1 = "select path from baseinfo where name=?";
String sql2 = "select size from baseinfo where name=?";
String sql3 = "select lastData from baseinfo where name=?";
String path = template.queryForObject(sql1, String.class,fileName);
double size = template.queryForObject(sql2, double.class,fileName);
String lastData = template.queryForObject(sql3, String.class,fileName);
hang[0] = fileName;
hang[1] = path;
hang[2] = size+"";
hang[3] = lastData;
return hang;
}
public static String getHangAll() {
String sql = "select * from baseinfo";
List<FileInfoAdd> list = template.query(sql,new BeanPropertyRowMapper<FileInfoAdd>(FileInfoAdd.class));
return JdbcTamplateDemo.listToString03(list);
}
/**将Map内容转成String*/
public static String mapToString(Map<String, Object> mapParam){
if(mapParam == null){
return null;
}
String result="";
StringBuilder stringBuilder = new StringBuilder();
for(Map.Entry<String, Object> entry : mapParam.entrySet()){
Object value=entry.getValue();
if(value instanceof String){
stringBuilder.append(result);
stringBuilder.append(entry.getKey());
stringBuilder.append("'");
stringBuilder.append(entry.getValue());
stringBuilder.append("'");
}else{
stringBuilder.append(result);
stringBuilder.append(entry.getKey());
stringBuilder.append(entry.getValue());
stringBuilder.append("'");
}
}
result = stringBuilder.toString();
if(!isEmpty(result)){
result=result.substring(0, result.length()-1);
}
return result;
}
/**
* 将list 转为string
* @param list
* @return
*/
@SuppressWarnings({ "unused", "null" })
public static String listToString03(List<FileInfoAdd> list){
if(null ==list && list.size()<=0){
System.out.println("list内容为空!");
}else{
StringBuilder sb = new StringBuilder();
String resultString = "";
for(int i=0;i<list.size();i++){
if(i<list.size()-1){
sb.append(list.get(i));
sb.append(",");
}else{
sb.append(list.get(i));
}
}
resultString = sb.toString();
return resultString;
}
return null;
}
private static boolean isEmpty(String result) {
// TODO Auto-generated method stub
return false;
}
}
gui的实现
Start.java
菜单界面,也是程序运行的界面
package com.gui;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Start extends JMenuBar {
/**
*开始菜单
*/
private static final long serialVersionUID = 1L;
public Start() {
// TODO Auto-generated constructor stub
add(createFileMenu());
//添加“文件”菜单
add(createEditMenu());
//添加“编辑”菜单
setVisible(true);
}
public static void main(String[] args) {
JFrame frame=new JFrame("菜单栏");
JLabel jlimage = new JLabel();
ImageIcon icon = new ImageIcon("./img/fileInfo.png");
icon.setImage(icon.getImage().getScaledInstance(540, 713, Image.SCALE_DEFAULT));
jlimage.setIcon(icon);
frame.add(jlimage);
frame.setSize(540,713);
frame.setJMenuBar(new Start());
frame.setVisible(true);
}
//定义“简介”菜单
private JMenu createFileMenu()
{
JMenu menu=new JMenu("显示(F)");
//设置快速访问符
menu.setMnemonic(KeyEvent.VK_F);
JMenuItem item=new JMenuItem("文件基本信息");
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ShowFileInfo.runFileInfo();
}
});
menu.add(item);
item=new JMenuItem("文件内容统计信息");
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FileContent.runFileContent();
}
});
menu.add(item);
item=new JMenuItem("文件内容");
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ReadFileContent.runReadFileCentent();
}
});
menu.add(item);
menu.addSeparator();
item=new JMenuItem("退出");
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
menu.add(item);
return menu;
}
//定义“编辑”菜单
private JMenu createEditMenu()
{
JMenu menu=new JMenu("查询(E)");
menu.setMnemonic(KeyEvent.VK_E);
JMenuItem item=new JMenuItem("按文件大小排序(U)",KeyEvent.VK_U);
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SortForSize.runSortForSize();
}
});
menu.add(item);
menu.addSeparator();
item=new JMenuItem("按文件名查询(U)",KeyEvent.VK_T);
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SelectMessage.runShowMessage();
}
});
menu.add(item);
return menu;
}
}
FileContent.java
显示文件内容信息,如行数,字数
package com.gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
public class FileContent {
public static void showFileContent() {
JFrame frame = new JFrame("显示文件统计信息");
JPanel panel = new JPanel();
panel.add(new JLabel("输入文件路径:"));
JTextField text = new JTextField(15);
panel.add(text);
JButton button = new JButton("显示");
button.addActionListener(new ActionListener() {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void actionPerformed(ActionEvent e) {
String fileName = text.getText();
File file = new File(fileName);
//获取该File对象的名字
String name = file.getName();
try {//try代码块,当发生异常时会转到catch代码块中
//读取指定的文件
InputStreamReader read = new InputStreamReader(new FileInputStream(fileName),"utf-8");
BufferedReader in = new BufferedReader(read);//可用于读取指定文件
String str=null;//定义一个字符串类型变量str
int i = 0;//定义一个整型变量,用于统计行数
int c = 0;//定义一个整型变量,用于统计字符数
int d = 0;//定义一个整型变量,用于统计字节数
while ((str = in.readLine())!= null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行
i++;//每循环一次就进行一次自增,用于统计文本行数
c += str.length();//用于统计总字符数
byte[] bytes=str.getBytes();//求出该行的字节数组
d += bytes.length;//用于统计总字节数
}
in.close();//关闭流
Vector rowData,columnNames;
columnNames=new Vector();
//设置列名
columnNames.add("文件名");
columnNames.add("文件行数");
columnNames.add("文件字/单词数");
columnNames.add("字节数");
rowData = new Vector();
Vector hang=new Vector();
hang.add(name);
hang.add(i+"");
hang.add(c+"");
hang.add(d+"");
//加入到rowData
rowData.add(hang);
JTable jt= new JTable(rowData,columnNames);
JScrollPane jsp= new JScrollPane(jt);
panel.add(jsp);
frame.add(panel);
frame.setSize(540,713);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
} catch (IOException e1) {//当try代码块有异常时转到catch代码块
e1.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
}
}
});
panel.add(button);
frame.add(panel);
frame.setSize(540,713);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
public static void runFileContent() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
FileContent.showFileContent();
}
});
}
}
ReadFileContent.java
将文件内容显示到gui的面板上
package com.gui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class ReadFileContent {
/**
* 显示文件内容到文本框
*/
public static void showReadFileContent() {
JFrame frame = new JFrame("显示文件内容");
JPanel panel = new JPanel();
panel.add(new JLabel("输入文件路径:"));
JTextField text = new JTextField(20);
panel.add(text);
JButton button = new JButton("显示");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setLayout(new BorderLayout());
// 读取文件路径
String strpath = text.getText();
// 读取文本中全部路径
String res = readFile(strpath);
JTextArea jtf = new JTextArea(res);
jtf.setLineWrap(true);
jtf.setWrapStyleWord(true);
frame.add(jtf,BorderLayout.SOUTH);
frame.setSize(540,713);
frame.setVisible(true);
}
});
panel.add(button);
frame.add(panel,BorderLayout.NORTH);
frame.setSize(540,713);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
/*
* *读取文件方法
*/
@SuppressWarnings("resource")
public static String readFile(String strpath) {
System.out.println("readFile:" + strpath);
String res = null;
StringBuilder sb = new StringBuilder();
try {
File file = new File(strpath);
InputStreamReader br = new InputStreamReader(new FileInputStream(file), "UTF-8");
BufferedReader reader = new BufferedReader(br);
String str;
while ((str = reader.readLine()) != null) {
sb.append(str + "\n");
}
res = sb.toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return res;
}
/**
* 运行
*/
public static void runReadFileCentent() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ReadFileContent.showReadFileContent();
}
});
}
}
SelectMessage.java
输入文件名从数据库中查询文件基本信息
package com.gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import com.jdbcTemplate.JdbcTamplateDemo;
public class SelectMessage {
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void showMessage() {
JFrame frame = new JFrame("显示文件基本信息");
JPanel panel = new JPanel();
panel.add(new JLabel("输入文件名称:"));
JTextField text = new JTextField(15);
panel.add(text);
JButton button = new JButton("查询");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String[] hang1 = new String[4];
hang1 = JdbcTamplateDemo.gethang(text.getText());
Vector hang=new Vector();
hang.add(hang1[0]);
hang.add(hang1[1]);
hang.add(hang1[2]);
hang.add(hang1[3]);
}
});
Vector rowData,columnNames;
columnNames=new Vector();
//设置列名
columnNames.add("文件名");
columnNames.add("文件路径");
columnNames.add("文件大小");
columnNames.add("最后修改时间");
rowData = new Vector();
//rowData可以存放多行,开始从数据库里取
String[] hang1 = new String[4];
hang1 = JdbcTamplateDemo.gethang("card.txt");
Vector hang=new Vector();
hang.add(hang1[0]);
hang.add(hang1[1]);
hang.add(hang1[2]);
hang.add(hang1[3]);
//加入到rowData
rowData.add(hang);
JTable jt= new JTable(rowData,columnNames);
JScrollPane jsp= new JScrollPane(jt);
panel.add(button);
panel.add(jsp);
frame.add(panel);
frame.setSize(540,713);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
public static void runShowMessage() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SelectMessage.showMessage();
}
});
}
}
ShowFileInfo.java
输入文件路径,显示文件基本信息
package com.gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import com.jdbcTemplate.JdbcTamplateDemo;
public class ShowFileInfo {
/**
* 显示基本信息
*/
public static void fileInfo() {
JFrame frame = new JFrame("显示基本信息");
JPanel panel = new JPanel();
panel.add(new JLabel("输入文件路径:"));
JTextField text = new JTextField(15);
panel.add(text);
JButton button = new JButton("显示");
button.addActionListener(new ActionListener() {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void actionPerformed(ActionEvent e) {
String fileName = text.getText();
File file = new File(fileName);
//获取该File对象的名字
String name = file.getName();
//获取该File对象的相对路径
String path = file.getPath();
//获取此文件的最后修改时间
String size = file.length() + "";
Date date = new Date(file.lastModified());
//设置时间格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
//将获取的时间转换成设置的格式
String dateTime=df.format(date);
//输出此文件的最后修改时间
JdbcTamplateDemo.addData(fileName);
Vector rowData,columnNames;
columnNames=new Vector();
//设置列名
columnNames.add("文件名");
columnNames.add("文件路径");
columnNames.add("文件大小");
columnNames.add("最后修改时间");
rowData = new Vector();
Vector hang=new Vector();
hang.add(name);
hang.add(path);
hang.add(size);
hang.add(dateTime);
//加入到rowData
rowData.add(hang);
JTable jt= new JTable(rowData,columnNames);
JScrollPane jsp= new JScrollPane(jt);
panel.add(jsp);
frame.add(panel);
frame.setSize(540,713);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
});
panel.add(button);
frame.add(panel);
frame.setSize(540,713);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
public static void runFileInfo() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ShowFileInfo.fileInfo();
}
});
}
}
SortForSize.java
在数据库中按文件大小进行排序,从小到大
package com.gui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import com.jdbcTemplate.JdbcTamplateDemo;
public class SortForSize {
/**
* 按照文件大小排序
*/
public static void showSortForSize() {
JFrame frame = new JFrame("按文件大小排序");
JPanel panel = new JPanel();
panel.add(new JLabel("显示排序后的文件"));
JButton button = new JButton("显示");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JTextArea text = new JTextArea(JdbcTamplateDemo.getHangAll());
text.setLineWrap(true);
text.setWrapStyleWord(true);
frame.add(text,BorderLayout.CENTER);
frame.setSize(540,713);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
});
panel.add(button);
frame.add(panel,BorderLayout.SOUTH);
frame.setSize(540,713);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
/**
* run
*/
public static void runSortForSize() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SortForSize.showSortForSize();
}
});
}
}