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

首先来看一下展示界面,JTree的特点有:节点可拖拽,根据输入生成目录,右键有菜单,点击触发事件等

JTable的特点有:含有隐藏列,可以进行翻页,列中含有下载按钮等

 

 

在来看一下代码吧,基本代码由Eclipse上的WindowBuilder进行拖拽式产生的,所以看起来有点乱,不过没事

在使用WindoerBuilder的时候要画JTree和JTable,这两个有几个共同点,必须放到JScrollPanel中,因为这两个控件的内容会可能有很多。

 

[java][/java] view plaincopy

  1. package test;
  2. import java.awt.BorderLayout;
  3. import java.awt.Component;
  4. import java.awt.EventQueue;
  5. import java.awt.GridBagConstraints;
  6. import java.awt.GridBagLayout;
  7. import java.awt.Insets;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.event.MouseAdapter;
  11. import java.awt.event.MouseEvent;
  12. import java.util.List;
  13. import javax.swing.AbstractAction;
  14. import javax.swing.DefaultCellEditor;
  15. import javax.swing.JButton;
  16. import javax.swing.JFrame;
  17. import javax.swing.JLabel;
  18. import javax.swing.JPanel;
  19. import javax.swing.JPopupMenu;
  20. import javax.swing.JScrollPane;
  21. import javax.swing.JTabbedPane;
  22. import javax.swing.JTable;
  23. import javax.swing.JTextField;
  24. import javax.swing.JTree;
  25. import javax.swing.border.EmptyBorder;
  26. import javax.swing.table.AbstractTableModel;
  27. import javax.swing.table.TableCellRenderer;
  28. import javax.swing.tree.DefaultMutableTreeNode;
  29. import com.car.client.controller.DocsTreeTransferHanlder;
  30. import com.car.cs.pojodata.VEachDir;
  31. import com.car.cs.pojodata.VEachFile;
  32. import com.car.rmi.client.DocsMgtRmi;
  33. public class InnerDocsMgt extends JFrame {
  34.     /**
  35.      *
  36.      */
  37.     private static final long serialVersionUID = 1L;
  38.     private JPanel contentPane;
  39.     private JTable table;
  40.     private JTree tree;
  41.     private JLabel currentDirLabel;
  42.     private JLabel totalFilesNumLabel;
  43.     private List<VEachFile> docFils;
  44.     private final int maxFilesAPage = 50;
  45.     private JLabel curPageLabel;
  46.     private int curPageNum = 0;
  47.     /**
  48.      * Launch the application.
  49.      */
  50.     public static void main(String[] args) {
  51.         EventQueue.invokeLater(new Runnable() {
  52.             public void run() {
  53.                 try {
  54.                     InnerDocsMgt frame = new InnerDocsMgt();
  55.                     frame.setVisible(true);
  56.                 } catch (Exception e) {
  57.                     e.printStackTrace();
  58.                 }
  59.             }
  60.         });
  61.     }
  62.     /**
  63.      * Create the frame.
  64.      */
  65.     public InnerDocsMgt() {
  66.         setTitle(“\u5185\u90E8\u8D44\u6599\u7BA1\u7406”);
  67.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  68.         setBounds(100, 100, 450, 300);
  69.         this.setSize(800, 600);
  70.         contentPane = new JPanel();
  71.         contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  72.         contentPane.setLayout(new BorderLayout(0, 0));
  73.         setContentPane(contentPane);
  74.         JPanel panel = new JPanel();
  75.         contentPane.add(panel, BorderLayout.WEST);
  76.         GridBagLayout gbl_panel = new GridBagLayout();
  77.         gbl_panel.columnWidths = new int[] { 54, 0, 0, 0, 0, 0, 0, 0 };
  78.         gbl_panel.rowHeights = new int[] { 31, 0, 0 };
  79.         gbl_panel.columnWeights = new double[] { 1.0, 0.0, 0.0, 0.0, 0.0, 0.0,
  80.                 0.0, Double.MIN_VALUE };
  81.         gbl_panel.rowWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE };
  82.         panel.setLayout(gbl_panel);
  83.         JLabel lblNewLabel = new JLabel(
  84.                 “\u5185\u90E8\u8D44\u6599\u76EE\u5F55\u5217\u8868”);
  85.         GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
  86.         gbc_lblNewLabel.gridwidth = 5;
  87.         gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
  88.         gbc_lblNewLabel.gridx = 0;
  89.         gbc_lblNewLabel.gridy = 0;
  90.         panel.add(lblNewLabel, gbc_lblNewLabel);
  91.         JButton button_4 = new JButton(“\u4FDD\u5B58\u76EE\u5F55\u64CD\u4F5C”);
  92.         GridBagConstraints gbc_button_4 = new GridBagConstraints();
  93.         gbc_button_4.insets = new Insets(0, 0, 5, 5);
  94.         gbc_button_4.gridx = 5;
  95.         gbc_button_4.gridy = 0;
  96.         panel.add(button_4, gbc_button_4);
  97.         JScrollPane scrollPane = new JScrollPane();
  98.         GridBagConstraints gbc_scrollPane = new GridBagConstraints();
  99.         gbc_scrollPane.gridwidth = 7;
  100.         gbc_scrollPane.fill = GridBagConstraints.BOTH;
  101.         gbc_scrollPane.gridx = 0;
  102.         gbc_scrollPane.gridy = 1;
  103.         panel.add(scrollPane, gbc_scrollPane);
  104.         DefaultMutableTreeNode top = new DefaultMutableTreeNode(“/”);
  105.         createNodes(top);
  106.         tree = new JTree(top);
  107.         scrollPane.setViewportView(tree);
  108.         tree.setEditable(true);
  109.         tree.setDragEnabled(true);
  110.         this.setPopupMenu();
  111.         try {
  112.             tree.setTransferHandler(new DocsTreeTransferHanlder());
  113.         } catch (ClassNotFoundException e) {
  114.             e.printStackTrace();
  115.         }
  116.         JPanel panel_1 = new JPanel();
  117.         contentPane.add(panel_1, BorderLayout.CENTER);
  118.         GridBagLayout gbl_panel_1 = new GridBagLayout();
  119.         gbl_panel_1.columnWidths = new int[] { 708, 0 };
  120.         gbl_panel_1.rowHeights = new int[] { 556, 0 };
  121.         gbl_panel_1.columnWeights = new double[] { 1.0, Double.MIN_VALUE };
  122.         gbl_panel_1.rowWeights = new double[] { 1.0, Double.MIN_VALUE };
  123.         panel_1.setLayout(gbl_panel_1);
  124.         JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
  125.         GridBagConstraints gbc_tabbedPane = new GridBagConstraints();
  126.         gbc_tabbedPane.fill = GridBagConstraints.BOTH;
  127.         gbc_tabbedPane.gridx = 0;
  128.         gbc_tabbedPane.gridy = 0;
  129.         panel_1.add(tabbedPane, gbc_tabbedPane);
  130.         JPanel panel_2 = new JPanel();
  131.         tabbedPane.addTab(“\u6587\u4EF6\u4E0E\u76EE\u5F55\u7BA1\u7406”, null,
  132.                 panel_2, null);
  133.         GridBagLayout gbl_panel_2 = new GridBagLayout();
  134.         gbl_panel_2.columnWidths = new int[] { 166, 59, 0, 0, 0, 0, 0 };
  135.         gbl_panel_2.rowHeights = new int[] { 30, 0, 49, 0, 0, 0 };
  136.         gbl_panel_2.columnWeights = new double[] { 1.0, 0.0, 0.0, 0.0, 0.0,
  137.                 0.0, Double.MIN_VALUE };
  138.         gbl_panel_2.rowWeights = new double[] { 0.0, 0.0, 1.0, 0.0, 0.0,
  139.                 Double.MIN_VALUE };
  140.         panel_2.setLayout(gbl_panel_2);
  141.         currentDirLabel = new JLabel(
  142.                 “\u5F53\u524D\u76EE\u5F55\uFF1Aone->two->three”);
  143.         GridBagConstraints gbc_lblonetwothree = new GridBagConstraints();
  144.         gbc_lblonetwothree.gridwidth = 6;
  145.         gbc_lblonetwothree.anchor = GridBagConstraints.WEST;
  146.         gbc_lblonetwothree.insets = new Insets(0, 0, 5, 0);
  147.         gbc_lblonetwothree.gridx = 0;
  148.         gbc_lblonetwothree.gridy = 0;
  149.         panel_2.add(currentDirLabel, gbc_lblonetwothree);
  150.         JButton button_3 = new JButton(“\u5168\u9009/\u5168\u4E0D\u9009”);
  151.         GridBagConstraints gbc_button_3 = new GridBagConstraints();
  152.         gbc_button_3.insets = new Insets(0, 0, 5, 5);
  153.         gbc_button_3.gridx = 3;
  154.         gbc_button_3.gridy = 1;
  155.         panel_2.add(button_3, gbc_button_3);
  156.         JButton button = new JButton(“\u5220\u9664”);
  157.         GridBagConstraints gbc_button = new GridBagConstraints();
  158.         gbc_button.insets = new Insets(0, 0, 5, 5);
  159.         gbc_button.gridx = 4;
  160.         gbc_button.gridy = 1;
  161.         panel_2.add(button, gbc_button);
  162.         JButton button_1 = new JButton(“\u79FB\u52A8\u5230”);
  163.         button_1.setToolTipText(“\u8BF7\u5148\u9009\u62E9\u8981\u79FB\u52A8\u7684\u6587\u4EF6\uFF0C\u7136\u540E\u518D\u9009\u62E9\u4E00\u4E2A\u5DE6\u4FA7\u76EE\u5F55”);
  164.         GridBagConstraints gbc_button_1 = new GridBagConstraints();
  165.         gbc_button_1.insets = new Insets(0, 0, 5, 0);
  166.         gbc_button_1.gridx = 5;
  167.         gbc_button_1.gridy = 1;
  168.         panel_2.add(button_1, gbc_button_1);
  169.         JScrollPane scrollPane_1 = new JScrollPane();
  170.         GridBagConstraints gbc_scrollPane_1 = new GridBagConstraints();
  171.         gbc_scrollPane_1.gridwidth = 6;
  172.         gbc_scrollPane_1.insets = new Insets(0, 0, 5, 0);
  173.         gbc_scrollPane_1.fill = GridBagConstraints.BOTH;
  174.         gbc_scrollPane_1.gridx = 0;
  175.         gbc_scrollPane_1.gridy = 2;
  176.         panel_2.add(scrollPane_1, gbc_scrollPane_1);
  177.         String[] headNames = new String[] { “\u9009\u62E9”,
  178.                 “\u6587\u4EF6\u540D”, “\u5927\u5C0F\uFF08KB\uFF09”,
  179.                 “\u6587\u4EF6\u65E5\u671F”, “\u4F5C\u8005”, “”, “\u4E0B\u8F7D” };
  180.         Object[][] tableDatas = new Object[][] {
  181.                 { null, null, null, null, null, null, null },
  182.                 { null, null, null, null, null, null, null },
  183.                 { null, null, null, null, null, null, null },
  184.                 { null, null, null, null, null, null, null },
  185.                 { null, null, null, null, null, null, null },
  186.                 { null, null, null, null, null, null, null },
  187.                 { null, null, null, null, null, null, null },
  188.                 { null, null, null, null, null, null, null },
  189.                 { null, null, null, null, null, null, null },
  190.                 { null, null, null, null, null, null, null },
  191.                 { null, null, null, null, null, null, null },
  192.                 { null, null, null, null, null, null, null },
  193.                 { null, null, null, null, null, null, null },
  194.                 { null, null, null, null, null, null, null },
  195.                 { null, null, null, null, null, null, null },
  196.                 { null, null, null, null, null, null, null },
  197.                 { null, null, null, null, null, null, null },
  198.                 { null, null, null, null, null, null, null },
  199.                 { null, null, null, null, null, null, null },
  200.                 { null, null, null, null, null, null, null },
  201.                 { null, null, null, null, null, null, null },
  202.                 { null, null, null, null, null, null, null },
  203.                 { null, null, null, null, null, null, null },
  204.                 { null, null, null, null, null, null, null },
  205.                 { null, null, null, null, null, null, null },
  206.                 { null, null, null, null, null, null, null },
  207.                 { null, null, null, null, null, null, null },
  208.                 { null, null, null, null, null, null, null },
  209.                 { null, null, null, null, null, null, null },
  210.                 { null, null, null, null, null, null, null },
  211.                 { null, null, null, null, null, null, null },
  212.                 { null, null, null, null, null, null, null },
  213.                 { null, null, null, null, null, null, null },
  214.                 { null, null, null, null, null, null, null },
  215.                 { null, null, null, null, null, null, null },
  216.                 { null, null, null, null, null, null, null },
  217.                 { null, null, null, null, null, null, null },
  218.                 { null, null, null, null, null, null, null },
  219.                 { null, null, null, null, null, null, null },
  220.                 { null, null, null, null, null, null, null },
  221.                 { null, null, null, null, null, null, null },
  222.                 { null, null, null, null, null, null, null },
  223.                 { null, null, null, null, null, null, null },
  224.                 { null, null, null, null, null, null, null },
  225.                 { null, null, null, null, null, null, null },
  226.                 { null, null, null, null, null, null, null },
  227.                 { null, null, null, null, null, null, null },
  228.                 { null, null, null, null, null, null, null },
  229.                 { null, null, null, null, null, null, null },
  230.                 { null, null, null, null, null, null, null }, };
  231.         table = new JTable(new DocsTableModel(headNames, tableDatas));
  232.         table.getColumnModel().getColumn(0)
  233.                 .setCellEditor(table.getDefaultEditor(Boolean.class));
  234.         table.getColumnModel().getColumn(0)
  235.                 .setCellRenderer(table.getDefaultRenderer(Boolean.class));
  236.         table.getColumnModel().getColumn(0).setPreferredWidth(38);
  237.         table.getColumnModel().getColumn(1).setPreferredWidth(206);
  238.         table.getColumnModel().getColumn(2).setPreferredWidth(53);
  239.         table.getColumnModel().getColumn(3).setPreferredWidth(134);
  240.         table.getColumnModel().getColumn(4).setPreferredWidth(58);
  241.         // hide the 5th column, it contans the filepath
  242.         table.getTableHeader().getColumnModel().getColumn(5).setMaxWidth(0);// hide
  243.         table.getTableHeader().getColumnModel().getColumn(5).setMinWidth(0);// hide
  244.         table.getTableHeader().getColumnModel().getColumn(5)
  245.                 .setPreferredWidth(0);
  246.         table.getTableHeader().getColumnModel().getColumn(5).setWidth(0);
  247.         table.getColumnModel().getColumn(6)
  248.                 .setCellRenderer(new ButtonCellRenderer());
  249.         table.getColumnModel().getColumn(6)
  250.                 .setCellEditor(new ButtonCellEditor(table));
  251.         scrollPane_1.setViewportView(table);
  252.         totalFilesNumLabel = new JLabel(“\u6587\u4EF6\u603B\u6570\uFF1A0”);
  253.         GridBagConstraints gbc_totalFilesNumLabel = new GridBagConstraints();
  254.         gbc_totalFilesNumLabel.anchor = GridBagConstraints.WEST;
  255.         gbc_totalFilesNumLabel.insets = new Insets(0, 0, 0, 5);
  256.         gbc_totalFilesNumLabel.gridx = 0;
  257.         gbc_totalFilesNumLabel.gridy = 4;
  258.         panel_2.add(totalFilesNumLabel, gbc_totalFilesNumLabel);
  259.         curPageLabel = new JLabel(
  260.                 “\u5F53\u524D\u9875\u6570\uFF1A0| \u603B\u9875\u6570\uFF1A0”);
  261.         GridBagConstraints gbc_curPageLabel = new GridBagConstraints();
  262.         gbc_curPageLabel.gridwidth = 2;
  263.         gbc_curPageLabel.insets = new Insets(0, 0, 0, 5);
  264.         gbc_curPageLabel.gridx = 2;
  265.         gbc_curPageLabel.gridy = 4;
  266.         panel_2.add(curPageLabel, gbc_curPageLabel);
  267.         JButton btnNewButton = new JButton(“\u4E0A\u4E00\u9875”);
  268.         btnNewButton.addActionListener(new ActionListener() {
  269.             public void actionPerformed(ActionEvent e) {
  270.                 prePage();
  271.             }
  272.         });
  273.         GridBagConstraints gbc_btnNewButton = new GridBagConstraints();
  274.         gbc_btnNewButton.insets = new Insets(0, 0, 0, 5);
  275.         gbc_btnNewButton.gridx = 4;
  276.         gbc_btnNewButton.gridy = 4;
  277.         panel_2.add(btnNewButton, gbc_btnNewButton);
  278.         JButton button_2 = new JButton(“\u4E0B\u4E00\u9875”);
  279.         button_2.addActionListener(new ActionListener() {
  280.             public void actionPerformed(ActionEvent e) {
  281.                 nextPage();
  282.             }
  283.         });
  284.         GridBagConstraints gbc_button_2 = new GridBagConstraints();
  285.         gbc_button_2.gridx = 5;
  286.         gbc_button_2.gridy = 4;
  287.         panel_2.add(button_2, gbc_button_2);
  288.         JPanel panel_3 = new JPanel();
  289.         tabbedPane.addTab(“\u7F16\u8F91\u6587\u6863”, null, panel_3, null);
  290.         GridBagLayout gbl_panel_3 = new GridBagLayout();
  291.         gbl_panel_3.columnWidths = new int[] { 0 };
  292.         gbl_panel_3.rowHeights = new int[] { 0 };
  293.         gbl_panel_3.columnWeights = new double[] { Double.MIN_VALUE };
  294.         gbl_panel_3.rowWeights = new double[] { Double.MIN_VALUE };
  295.         panel_3.setLayout(gbl_panel_3);
  296.     }
  297.     private void createNodes(DefaultMutableTreeNode top) {
  298.         List<DefaultMutableTreeNode> nodes = DocsMgtRmi.getINS()
  299.                 .getFirstLevelDirs();
  300.         for (DefaultMutableTreeNode one : nodes) {
  301.             top.add(one);
  302.         }
  303.     }
  304.     public void setPopupMenu() {
  305.         final JPopupMenu pop = new JPopupMenu();
  306.         pop.add(new AbstractAction(“添加子目录”) {
  307.             private static final long serialVersionUID = 1L;
  308.             public void actionPerformed(ActionEvent e) {
  309.                 System.out.println(“Tree Add”);
  310.             }
  311.         });
  312.         pop.add(new AbstractAction(“删除目录”) {
  313.             private static final long serialVersionUID = 1L;
  314.             public void actionPerformed(ActionEvent e) {
  315.                 System.out.println(“Delete”);
  316.             }
  317.         });
  318.         tree.addMouseListener(new MouseAdapter() {
  319.             @Override
  320.             public void mouseReleased(MouseEvent e) {
  321.                 if (e.isMetaDown()) {
  322.                     pop.show(tree, e.getX(), e.getY());
  323.                 }
  324.             }
  325.             public void mouseClicked(MouseEvent evt) {
  326.                 if (evt.getClickCount() == 1) {
  327.                     VEachDir eDir = (VEachDir) getSelectedNode()
  328.                             .getUserObject();
  329.                     docFils = DocsMgtRmi.getINS().getFilesViaDirid(
  330.                             eDir.getDirId());
  331.                     int filesNum = docFils.size();
  332.                     currentDirLabel
  333.                             .setText(“\u5F53\u524D\u76EE\u5F55\uFF1Aone->two->three,=>DirID:”
  334.                                     + eDir.getDirId());
  335.                     totalFilesNumLabel.setText(“\u6587\u4EF6\u603B\u6570\uFF1A”
  336.                             + filesNum);
  337.                     int maxNum = Math.min(maxFilesAPage, filesNum);
  338.                     if (filesNum <= maxFilesAPage) {
  339.                         curPageLabel
  340.                                 .setText(“\u5F53\u524D\u9875\u6570\uFF1A 1 | \u603B\u9875\u6570\uFF1A 1”);
  341.                     } else {
  342.                         int totalNum = filesNum / maxFilesAPage;
  343.                         if (totalNum * maxFilesAPage < filesNum) {
  344.                             totalNum++;
  345.                         }
  346.                         curPageLabel
  347.                                 .setText(“\u5F53\u524D\u9875\u6570\uFF1A 1 | \u603B\u9875\u6570\uFF1A “
  348.                                         + totalNum);
  349.                     }
  350.                     curPageNum = 0;
  351.                     setDocTableValues(docFils.subList(0, maxNum));
  352.                 }
  353.             }
  354.         });
  355.     }
  356.     public void prePage() {
  357.         if (this.curPageNum <= 0) {
  358.             return;
  359.         }
  360.         int filesNum = docFils.size();
  361.         curPageNum–;
  362.         int totalPage = filesNum / maxFilesAPage;
  363.         if (totalPage * maxFilesAPage < filesNum) {
  364.             totalPage++;
  365.         }
  366.         curPageLabel
  367.                 .setText(“\u5F53\u524D\u9875\u6570\uFF1A ” + (curPageNum + 1)
  368.                         + ” | \u603B\u9875\u6570\uFF1A ” + totalPage);
  369.         setDocTableValues(docFils.subList(curPageNum * maxFilesAPage,
  370.                 Math.min((curPageNum + 1) * maxFilesAPage, filesNum)));
  371.     }
  372.     public void nextPage() {
  373.         int filesNum = docFils.size();
  374.         int totalPage = filesNum / maxFilesAPage;
  375.         if (totalPage * maxFilesAPage < filesNum) {
  376.             totalPage++;
  377.         }
  378.         if (curPageNum >= totalPage – 1) {
  379.             return;
  380.         }
  381.         curPageNum++;
  382.         setDocTableValues(docFils.subList(curPageNum * maxFilesAPage,
  383.                 Math.min((curPageNum + 1) * maxFilesAPage, filesNum)));
  384.         curPageLabel
  385.                 .setText(“\u5F53\u524D\u9875\u6570\uFF1A ” + (curPageNum + 1)
  386.                         + ” | \u603B\u9875\u6570\uFF1A ” + totalPage);
  387.     }
  388.     public void setDocTableValues(List<VEachFile> subDocs) {
  389.         int i = 0;
  390.         for (; i < subDocs.size(); i++) {
  391.             table.getModel().setValueAt(false, i, 0);
  392.             table.getModel().setValueAt(subDocs.get(i).getFileName(), i, 1);
  393.             table.getModel().setValueAt(subDocs.get(i).getFileSize(), i, 2);
  394.             table.getModel().setValueAt(
  395.                     subDocs.get(i).getFileDate().toLocaleString(), i, 3);
  396.             table.getModel().setValueAt(subDocs.get(i).getFileAuthor(), i, 4);
  397.             table.getModel().setValueAt(subDocs.get(i).getFilePath(), i, 5);
  398.         }
  399.         if (subDocs.size() < maxFilesAPage) {
  400.             for (; i < maxFilesAPage; i++) {
  401.                 table.getModel().setValueAt(false, i, 0);
  402.                 table.getModel().setValueAt(null, i, 1);
  403.                 table.getModel().setValueAt(null, i, 2);
  404.                 table.getModel().setValueAt(null, i, 3);
  405.                 table.getModel().setValueAt(null, i, 4);
  406.                 table.getModel().setValueAt(null, i, 5);
  407.             }
  408.         }
  409.         table.updateUI();
  410.         table.repaint();
  411.     }
  412.     public DefaultMutableTreeNode getSelectedNode() {
  413.         return (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
  414.     }
  415.     class DocsTableModel extends AbstractTableModel {
  416.         private String headName[];
  417.         private Object obj[][];
  418.         private Class[] columnTypes = new Class[] { Boolean.class,
  419.                 Object.class, Object.class, Object.class, Object.class,
  420.                 Object.class, Object.class };
  421.         public DocsTableModel() {
  422.             super();
  423.         }
  424.         public DocsTableModel(String[] headName, Object[][] obj) {
  425.             this();
  426.             this.headName = headName;
  427.             this.obj = obj;
  428.         }
  429.         public int getColumnCount() {
  430.             return headName.length;
  431.         }
  432.         public int getRowCount() {
  433.             return obj.length;
  434.         }
  435.         public Object getValueAt(int r, int c) {
  436.             return obj[r][c][/c];
  437.         }
  438.         public String getColumnName(int c) {
  439.             return headName[c][/c];
  440.         }
  441.         public Class<?> getColumnClass(int columnIndex) {
  442.             return columnTypes[columnIndex].getClass();
  443.         }
  444.         @Override
  445.         public boolean isCellEditable(int rowIndex, int columnIndex) {
  446.             return true;
  447.         }
  448.         public void setValueAt(Object value, int row, int col) {
  449.             obj[row][col] = value;
  450.             fireTableCellUpdated(row, col);
  451.         }
  452.     }
  453. }
  454. class ButtonCellEditor extends DefaultCellEditor {
  455.     private static final long serialVersionUID = -6546334664166791132L;
  456.     private JButton button;
  457.     private JTable table;
  458.     public ButtonCellEditor(JTable table) {
  459.         super(new JTextField());
  460.         this.setClickCountToStart(1);
  461.         this.initButton();
  462.         this.table = table;
  463.     }
  464.     private void initButton() {
  465.         this.button = new JButton();
  466.         this.button.setSize(50, 15);
  467.         this.button.addActionListener(new ActionListener() {
  468.             public void actionPerformed(ActionEvent e) {
  469.                 ButtonCellEditor.this.fireEditingCanceled();
  470.                 System.out.println(“Selected Column:”
  471.                         + table.getSelectedColumn()
  472.                         + “,row:”
  473.                         + table.getSelectedRow()
  474.                         + “,and filePath:”
  475.                         + table.getModel()
  476.                                 .getValueAt(table.getSelectedRow(), 5));
  477.             }
  478.         });
  479.     }
  480.     @Override
  481.     public Component getTableCellEditorComponent(JTable table, Object value,
  482.             boolean isSelected, int row, int column) {
  483.         this.button.setText(“下载”);
  484.         return this.button;
  485.     }
  486.     @Override
  487.     public Object getCellEditorValue() {
  488.         return this.button.getText();
  489.     }
  490. }
  491. class ButtonCellRenderer implements TableCellRenderer {
  492.     private JButton button;
  493.     public ButtonCellRenderer() {
  494.         this.button = new JButton();
  495.     }
  496.     public Component getTableCellRendererComponent(JTable table, Object value,
  497.             boolean isSelected, boolean hasFocus, int row, int column) {
  498.         this.button.setText(“下载”);
  499.         return this.button;
  500.     }
  501. }

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

 

 

[java][/java] view plaincopy

  1. package test;
  2. import java.net.MalformedURLException;
  3. import java.util.ArrayList;
  4. import java.util.Date;
  5. import java.util.List;
  6. import javax.swing.tree.DefaultMutableTreeNode;
  7. import org.apache.log4j.Logger;
  8. import com.car.cs.apis.RemindDao;
  9. import com.car.cs.pojodata.VEachDir;
  10. import com.car.cs.pojodata.VEachFile;
  11. import com.car.rmi.server.RmiUtil;
  12. public class DocsMgtRmi {
  13.     private final Logger logger = Logger.getLogger(DocsMgtRmi.class);
  14.     private RemindDao dao = null;
  15.     private static DocsMgtRmi rmi = null;
  16.     public static DocsMgtRmi getINS() {
  17.         if (rmi == null) {
  18.             synchronized (DocsMgtRmi.class) {
  19.                 if (rmi == null) {
  20.                     rmi = new DocsMgtRmi();
  21.                 }
  22.             }
  23.         }
  24.         return rmi;
  25.     }
  26.     private DocsMgtRmi() {
  27.     }
  28.     public List<DefaultMutableTreeNode> getFirstLevelDirs() {
  29.         ArrayList<DefaultMutableTreeNode> nodes = new ArrayList<DefaultMutableTreeNode>();
  30.         DefaultMutableTreeNode fstnode = null;
  31.         for (int i = 0; i < 10; i++) {
  32.             VEachDir fstLevelDir = new VEachDir(i, “200” + i + “年以前规章”, 0);
  33.             fstnode = new DefaultMutableTreeNode(fstLevelDir);
  34.             nodes.add(fstnode);
  35.         }
  36.         for (int i = 0; i < 10; i++) {
  37.             VEachDir secLevelDir = new VEachDir(i, “2009年投诉建议-卷” + i, 9);
  38.             DefaultMutableTreeNode secNode = new DefaultMutableTreeNode(
  39.                     secLevelDir);
  40.             fstnode.add(secNode);
  41.         }
  42.         return nodes;
  43.     }
  44.     public List<VEachFile> getFilesViaDirid(int dirId) {
  45.         ArrayList<VEachFile> files = new ArrayList<VEachFile>();
  46.         for (int i = 0; i < 97; i++) {
  47.             VEachFile one = new VEachFile(dirId, “天上星,亮晶晶,那是” + i + “双双眼睛.txt”,
  48.                     1000, new Date(), “张为山”, “one->two-” + i + “-<>”);
  49.             files.add(one);
  50.         }
  51.         return files;
  52.     }
  53.     public boolean saveDirChanged(List<VEachDir> dirs) {
  54.         return true;
  55.     }
  56. }

标签