实例 JTree(右键菜单,可拖拽)+Jtable(可翻页,列中含有按钮,隐藏列)(三)

2014-11-24 09:40:03 · 作者: · 浏览: 13
eEvent e) { if (e.isMetaDown()) { pop.show(tree, e.getX(), e.getY()); } } public void mouseClicked(MouseEvent evt) { if (evt.getClickCount() == 1) { VEachDir eDir = (VEachDir) getSelectedNode() .getUserObject(); docFils = DocsMgtRmi.getINS().getFilesViaDirid( eDir.getDirId()); int filesNum = docFils.size(); currentDirLabel .setText("\u5F53\u524D\u76EE\u5F55\uFF1Aone->two->three,=>DirID:" + eDir.getDirId()); totalFilesNumLabel.setText("\u6587\u4EF6\u603B\u6570\uFF1A" + filesNum); int maxNum = Math.min(maxFilesAPage, filesNum); if (filesNum <= maxFilesAPage) { curPageLabel .setText("\u5F53\u524D\u9875\u6570\uFF1A 1 | \u603B\u9875\u6570\uFF1A 1"); } else { int totalNum = filesNum / maxFilesAPage; if (totalNum * maxFilesAPage < filesNum) { totalNum++; } curPageLabel .setText("\u5F53\u524D\u9875\u6570\uFF1A 1 | \u603B\u9875\u6570\uFF1A " + totalNum); } curPageNum = 0; setDocTableva lues(docFils.subList(0, maxNum)); } } }); } public void prePage() { if (this.curPageNum <= 0) { return; } int filesNum = docFils.size(); curPageNum--; int totalPage = filesNum / maxFilesAPage; if (totalPage * maxFilesAPage < filesNum) { totalPage++; } curPageLabel .setText("\u5F53\u524D\u9875\u6570\uFF1A " + (curPageNum + 1) + " | \u603B\u9875\u6570\uFF1A " + totalPage); setDocTableva lues(docFils.subList(curPageNum * maxFilesAPage, Math.min((curPageNum + 1) * maxFilesAPage, filesNum))); } public void nextPage() { int filesNum = docFils.size(); int totalPage = filesNum / maxFilesAPage; if (totalPage * maxFilesAPage < filesNum) { totalPage++; } if (curPageNum >= totalPage - 1) { return; } curPageNum++; setDocTableva lues(docFils.subList(curPageNum * maxFilesAPage, Math.min((curPageNum + 1) * maxFilesAPage, filesNum))); curPageLabel .setText("\u5F53\u524D\u9875\u6570\uFF1A " + (curPageNum + 1) + " | \u603B\u9875\u6570\uFF1A " + totalPage); } public void setDocTableva lues(List subDocs) { int i = 0; for (; i < subDocs.size(); i++) { table.getModel().setValueAt(false, i, 0); table.getModel().setValueAt(subDocs.get(i).getFileName(), i, 1); table.getModel().setValueAt(subDocs.get(i).getFileSize(), i, 2); table.getModel().setValueAt( subDocs.get(i).getFileDate().toLocaleString(), i, 3); table.getModel().setValueAt(subDocs.get(i).getFileAuthor(), i, 4); table.getModel().setValueAt(subDocs.get(i).getFilePath(), i, 5); } if (subDocs.size() < maxFilesAPage) { for (; i < maxFilesAPage; i++) { table.getModel().setValueAt(false, i, 0); table.getModel().setValueAt(null, i, 1); table.getModel().setValueAt(null, i, 2); table.getModel().setValueAt(null, i, 3); table.getModel().setValueAt(null, i, 4); table.getModel().setValueAt(null, i, 5); } } table.updateUI(); table.repaint(); } public DefaultMutableTreeNode getSelectedNode() { return (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); } class DocsTableModel extends AbstractTableModel { private String headName[]; private Object obj[][]; private Class[] columnTypes = new Class[] { Boolean.class, Object.class, Object.class, Object.class, Object.class, Object.class, Object.class }; public DocsTableModel() { super(); } public DocsTableModel(String[] headName, Object[][] obj) { this(); this.headName = headName; this.obj = obj; } public int getColumnCount() { return headName.length; } public int getRowCount() { return obj.length; } public Object getValueAt(int r, int c) { return obj[r][c]; } public String getColumnName(int c) { return headName[c]; } public Class< >
getColumnClass(int columnIndex) { return columnTypes[columnIndex].getClass(); } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return true; } public void setValueAt(Object value, int row, int col) { obj[row][col] = value; fireTableCellUpdated(row, col); } } } class ButtonCellEditor extends DefaultCellEditor { private static final long serialVersionUID = -6546334664166791132L; private JButton button; private JTable table; public ButtonCellEditor(JTable table) { super(new JTextField()); this.setClickCountToStart(1); this.initButton(); this.table = table; } private void initButton() { this.button = new JButton(); this.button.setSize(50, 15); this.button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ButtonCellEditor.this.fireEditingCanceled(); System.out.println("Selected Column:" + table.getSelectedColumn() + ",row:" + table.getSelectedRow() + ",and filePath:" + table.getModel() .getValueAt(table.getSelectedRow(), 5)); } }); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { this.button.setText("下载"); return this.button; } @Override public Object getCellEditorValue() { return this.button.getText(); } } class ButtonCellRenderer implements TableCellRenderer { private JButton button; public ButtonCellRenderer() { this.button = new JButton(); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { this.button.setText("下载"); return this.button; } }

其中里面用到的制造数据的DocsMgtRmi类

package test;

import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.tree.DefaultMutableTreeNode;

import org.apache.log4j.Logger;

import com.car.cs.apis.RemindDao;
import com.car.cs.pojodata.VEachDir;
import com.car.cs.pojodata.VEachFile;
import com.car.rmi.server.RmiUtil;

public class DocsMgtRmi {

	private final Logger logger = Logger.getLogger(DocsMgtRmi.class);

	private RemindDao dao = null;
	private static DocsMgtRmi rmi = null;

	public static