filetable.java
来自「MyUploader 是一款使用 http 协议(RFC 1867)用于上传文件」· Java 代码 · 共 611 行 · 第 1/2 页
JAVA
611 行
if (list[i].isDirectory()) { FormFileField fileField = new FormFileField("userfile[]", list[i], formFileField.getUploadDirectory() + list[i].getName() + "/", contentTypeMapper.getContentType(list[i])); addDirectory(fileField); } else { FormFileField fileField = new FormFileField("userfile[]", list[i], formFileField.getUploadDirectory(), contentTypeMapper.getContentType(list[i])); addFile(fileField); } } } /** * Add a file to the internal collection. * * @param fileField The FormFileField. */ public void addFile(FormFileField fileField) { // check if file already exists String absolutePath = fileField.getFile().getAbsolutePath(); boolean found = false; for (int j = 0; j < files.size(); j++) { FormFileField formFileField = (FormFileField)files.elementAt(j); if (formFileField.getFile().getAbsolutePath().equalsIgnoreCase(absolutePath)) { found = true; break; } } if (!found) { // check if the extension must not be rejected if (rejectFileFilter != null) { if (!rejectFileFilter.rejectFile(fileField.getFile())) { files.add(fileField); } } else { files.add(fileField); } } } /** * Add a list of files to the internal collection. * The internal collection is the list to be uploaded. * * @param list The files to be added. */ public void addFiles (File [] list) { ContentTypeMapper contentTypeMapper = ContentTypeMapper.getInstance(); // retrieve the allowed files File [] file = getFilteredFiles(list); for (int i = 0; i < file.length; i++) { // ensure that no directories are dropped if (file[i].isDirectory()) { if (Parameters.getParameter(Parameters.UPLOAD_DIRECTORIES, true)) { FormFileField formFileField = new FormFileField("userfile[]", file[i], file[i].getName() + "/", contentTypeMapper.getContentType(file[i])); addDirectory(formFileField); } } else { FormFileField formFileField = new FormFileField("userfile[]", file[i], "", contentTypeMapper.getContentType(file[i])); addFile(formFileField); } } sort(1, true); if (Parameters.getParameter(Parameters.COLDFUSION, false)) { changeNames(); } // update the table model.fireTableDataChanged(); sortDown = true; sortOnFile = true; // the table header must be updated to remove the down/upicon // in case of 1 files or 0 files getTableHeader().updateUI(); } /** * Change the form names of the files to be uploaded. The first form name * is f1 the second f2 and so an. */ public void changeNames() { for (int i = 0; i < files.size(); i++) { FormFileField fileField = (FormFileField)files.elementAt(i); fileField.setName("file_" + (i + 1)); } } /** * The to be uploaded files. * * @return The files to be uploaded. */ public FormFileField [] getFormFileFields() { return (FormFileField [])files.toArray(new FormFileField[files.size()]); } /** * Returns the number of files. * * @return The number of files. */ public int getNumberOfFiles() { return files.size(); } /** * Shows the popup. * * @param e The MouseEvent. */ public void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger()) { popup.show(e.getComponent(), e.getX(), e.getY()); } } /** * Class for encapsulating the mouse events. This class is needed * for the sort of the table. */ class TableMouseAdapter extends MouseAdapter { public void mouseReleased(MouseEvent me) { int clickCount = me.getClickCount(); if(clickCount == 1) { // determine the column int tableColumn = columnAtPoint(me.getPoint()); if (tableColumn == 1) { if (sortOnFile == true) { if (sortDown == true) { sort(tableColumn, false); model.fireTableDataChanged(); sortDown = false; } else { sort(tableColumn, true); model.fireTableDataChanged(); sortDown = true; } } else { sort(tableColumn, true); model.fireTableDataChanged(); sortDown = true; sortOnFile = true; } } else if (tableColumn == 2) { if (sortOnFile == true) { sort(tableColumn, true); model.fireTableDataChanged(); sortDown = true; sortOnFile = false; } else { if (sortDown == true) { sort(tableColumn, false); model.fireTableDataChanged(); sortDown = false; } else { sort(tableColumn, true); model.fireTableDataChanged(); sortDown = true; } } } getTableHeader().repaint(); } } } /** * Class for showing a table header. */ class TableHeaderRenderer extends DefaultTableCellRenderer implements TableCellRenderer { private static final long serialVersionUID = -4402478739497433510L; // This method is called each time a column header // using this renderer needs to be rendered. public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int rowIndex, int colIndex) { // Inherit the colors and font from the header component if (table != null) { JTableHeader header = table.getTableHeader(); if (header != null) { setForeground(header.getForeground()); setBackground(header.getBackground()); setFont(header.getFont()); } } if (colIndex == 1) { setText(localeManager.getString("file") + " "); } else { setText(localeManager.getString("size") + " "); } if (files.size() > 1) { // was 0 if (colIndex == 1) { if (sortOnFile == true) { if (sortDown) { setIcon(new DownIcon()); } else { setIcon(new UpIcon()); } } else { setIcon(null); } } else { if (sortOnFile == false) { if (sortDown) { setIcon(new DownIcon()); } else { setIcon(new UpIcon()); } } else { setIcon(null); } } } else { setIcon(null); // toegevoegd } setBorder(UIManager.getBorder("TableHeader.cellBorder")); setHorizontalAlignment(JLabel.CENTER); setHorizontalTextPosition(JLabel.LEFT); return this; } } /** * Class needed for drag and drop. */ class FileDropTargetListener implements DropTargetListener { /* (non-Javadoc) * @see java.awt.dnd.DropTargetListener#dragEnter(java.awt.dnd.DropTargetDragEvent) */ public void dragEnter(DropTargetDragEvent event) { event.acceptDrag (DnDConstants.ACTION_COPY); } /* (non-Javadoc) * @see java.awt.dnd.DropTargetListener#dragOver(java.awt.dnd.DropTargetDragEvent) */ public void dragOver(DropTargetDragEvent event) { event.acceptDrag(DnDConstants.ACTION_COPY); } /* (non-Javadoc) * @see java.awt.dnd.DropTargetListener#dropActionChanged(java.awt.dnd.DropTargetDragEvent) */ public void dropActionChanged(DropTargetDragEvent event) {} /* (non-Javadoc) * @see java.awt.dnd.DropTargetListener#dragExit(java.awt.dnd.DropTargetEvent) */ public void dragExit(DropTargetEvent event) {} /* (non-Javadoc) * @see java.awt.dnd.DropTargetListener#drop(java.awt.dnd.DropTargetDropEvent) */ public void drop(DropTargetDropEvent event) { if ((event.getSourceActions() & DnDConstants.ACTION_COPY) != 0) { event.acceptDrop(DnDConstants.ACTION_COPY); } else { event.rejectDrop(); return; } Transferable transferable = event.getTransferable(); DataFlavor[] flavors = event.getCurrentDataFlavors(); paste(flavors, transferable); event.dropComplete(true); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?