📄 sendlistdialog.java
字号:
/**
* @(#)frm.SendListDialog.java 2008-10-9
* Copy Right Information : Tarena
* Project : IPMsg
* JDK version used : jdk1.6.4
* Comments : 准备传送文件列表窗口。
* Version : 1.0
* Sr Date Modified By Why & What is modified
* 1. 2008-10-9 小猪 新建
**/
package frm;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableRowSorter;
import tools.FileInfo;
/**
* 准备传送文件列表窗口。
* 2008-10-9
* @author 达内科技[Tarena Training Group]
* @version 1.0
* @since JDK1.6(建议)
*/
@SuppressWarnings("serial")
public class SendListDialog extends JDialog implements ActionListener{
/** 传送文件的列表JTalbe */
private JTable tableList = null;
/** talbeList的model */
public MyDefaultTableModel model =null;
/** 添加文件按钮 */
private JButton btnAddFile = new JButton("添加文件");
/** 添加文件夹按钮 */
private JButton btnAddDirectory = new JButton("添加文件夹");
/** 删除按钮 */
private JButton btnDelete = new JButton("删除");
/** 关闭按钮 */
private JButton btnClose = new JButton("关闭");
/** 父窗体 */
private Frame owner = null;
/** 传送文件的列表 */
//private Vector<String> list = new Vector<String>();
public SendListDialog(Frame owner, boolean modal,boolean isShow) {
super(owner,modal);
this.owner = owner;
setTitle("准备传送的文件列表");
setSize(400,170);
//setMinimumSize(new Dimension(300,210));
setResizable(false);
Toolkit tk=Toolkit.getDefaultToolkit();
setLocation((tk.getScreenSize().width-getSize().width)/2,(tk.getScreenSize().height-getSize().height)/2);
try {
setIconImage(ImageIO.read(getClass().getResource("/frm/img/ipmsg.gif")));
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
init();
addWindowListener(new MyWindowAdapter());
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(isShow);
}
/**
* 初始化面板。
*/
@SuppressWarnings("unchecked")
private void init(){
btnAddFile.setPreferredSize(new Dimension(75,25));
btnAddFile.setMargin(new Insets(0,0,0,0));
btnAddFile.addActionListener(this);
btnAddDirectory.setPreferredSize(new Dimension(75,25));
btnAddDirectory.setMargin(new Insets(0,0,0,0));
btnAddDirectory.addActionListener(this);
btnDelete.setPreferredSize(new Dimension(75,25));
btnDelete.setMargin(new Insets(0,0,0,0));
btnDelete.addActionListener(this);
btnClose.setPreferredSize(new Dimension(75,25));
btnClose.setMargin(new Insets(0,0,0,0));
btnClose.addActionListener(this);
model = new MyDefaultTableModel();
String[] columns = {"文件名","大小","位置"};
for(String cloumn:columns)
model.addColumn(cloumn);
tableList = new JTable(model);
TableRowSorter sorter = new TableRowSorter(model);
tableList.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tableList.setRowSorter(sorter);
tableList.setFillsViewportHeight(true);
TableColumn cloumn0 = tableList.getColumn(columns[0]);
cloumn0.setPreferredWidth(115);
TableColumn cloumn1 = tableList.getColumn(columns[1]);
cloumn1.setPreferredWidth(60);
//cloumn1.set
TableColumn cloumn2 = tableList.getColumn(columns[2]);
cloumn2.setPreferredWidth(200);
((DefaultTableCellRenderer)tableList.getCellRenderer(0, 1)).setHorizontalAlignment(SwingConstants.CENTER);
JPanel paneBottom = new JPanel();
paneBottom.setLayout(new FlowLayout(FlowLayout.LEFT,8,8));
paneBottom.setPreferredSize(new Dimension(200,43));
paneBottom.add(btnAddFile);
paneBottom.add(btnAddDirectory);
paneBottom.add(btnDelete);
paneBottom.add(new FillWidth(45,25));
paneBottom.add(btnClose);
add(new FillWidth(8,8),BorderLayout.NORTH);
add(new FillWidth(8,8),BorderLayout.EAST);
add(new FillWidth(8,8),BorderLayout.WEST);
add(new JScrollPane(tableList));
add(paneBottom,BorderLayout.SOUTH);
}
/**
* 按钮点击事件。
*/
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnAddFile){
DirectoryChoose chooser = new DirectoryChoose(this,"添加文件",JFileChooser.FILES_ONLY);
File file = chooser.getSelectedFile();
model.addFile(file);
return;
}
if(e.getSource()==btnAddDirectory){
DirectoryChoose chooser = new DirectoryChoose(this,"添加文件夹",JFileChooser.DIRECTORIES_ONLY);
File file = chooser.getSelectedFile();
model.addFile(file);
return;
}
if(e.getSource()==btnDelete){
//while(tableList.getSelectedRow()!=-1)
//model.removeRow(tableList.getSelectedRow());
int[] rows = tableList.getSelectedRows();
for(int i = rows.length-1;i>=0;i--)
model.removeRow(i);
return;
}
if(e.getSource()==btnClose){
close();
return;
}
}
/**
* 获取传送文件列表的文件名组成的字符串
* @return 文件名组成的字符串,用空格隔开。
*/
public String getSendFile(){
String str = "";
for(int i=0;i<model.getRowCount();i++)
str += model.getValueAt(i, 0)+" ";
return str.substring(0,str.length());
}
/**
* 获取发送的目录路径。
* @return 发送的目录路径。
*/
public String getSendPath(){
String path = "<";
for(int i=0;i<model.getRowCount();i++){
File file = model.getFile(i);
if(file!=null && file.exists() && file.canRead()){
path += "[";
if(file.isFile())
path += "1";
else
path += "0";
path += "]?"+file.getAbsolutePath()+"?"+file.getName()+"|";
}
}
if(path.endsWith("|"))
path = path.substring(0,path.length()-1);
path += ">";
return path;
}
/**
* 获取发送文件的列表。
* @return 返回发送文件的列表。
*/
public String getSendList(){
String path = "";
for(int i=0;i<model.getRowCount();i++){
File file = model.getFile(i);
if(file!=null && file.exists() && file.canRead()){
path += file.getAbsolutePath() + "|";
}
}
return path;
}
/**
* 清空发送后的内容。
*/
public void clearSendList(){
model.setRowCount(0);
}
/**
* table的Model
*/
public class MyDefaultTableModel extends DefaultTableModel{
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
public boolean addFile(File file){
if(file!=null && file.exists() && file.canRead() && !isExitFile(file)){
String[] row = {file.getName(),FileInfo.getFileLength(file),file.getParent()};
addRow(row);
return true;
}
return false;
}
public boolean isExitFile(File file){
if(file==null) return false;
for(int i=0;i<getRowCount();i++){
File xfile = getFile(i);
if(xfile!=null && xfile.exists() && xfile.equals(file))
return true;
}
return false;
}
public File getFile(int n){
File file = new File(getValueAt(n, 2).toString()+File.separator+getValueAt(n, 0).toString());
if(file!=null && file.exists() && file.canRead())
return file;
else
return null;
}
}
/**
* 窗体关闭方法。
*/
private void close(){
dispose();
if(owner instanceof IPMsgMainFrm){
IPMsgMainFrm main = (IPMsgMainFrm)owner;
main.setSendFileList(getSendFile());
}
}
/**
* 窗体关闭时触发事件。
*/
private class MyWindowAdapter extends WindowAdapter{
public void windowClosing(WindowEvent e) {
close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -