TransferableTreeNode.java
上传用户:hltofo
上传日期:2021-08-24
资源大小:21k
文件大小:3k
源码类别:

TreeView控件

开发平台:

Java

  1. package net.antonioshome.swing.treewrapper.example;
  2. import java.awt.datatransfer.DataFlavor;
  3. import java.awt.datatransfer.Transferable;
  4. import java.awt.datatransfer.UnsupportedFlavorException;
  5. import java.io.IOException;
  6. import javax.swing.JTree;
  7. import javax.swing.tree.MutableTreeNode;
  8. import javax.swing.tree.TreeNode;
  9. public class TransferableTreeNode implements Transferable{
  10. private JTree sourceTree;//拖动节点的所在的树
  11. private MutableTreeNode sourceNode;//拖动的源节点
  12. private boolean wasExpand;//拖动的节点(如果不是叶子节点)是不是展开状态
  13. public TransferableTreeNode(JTree sourceTree, MutableTreeNode sourceNode, boolean wasExpand) {
  14. this.sourceTree = sourceTree;
  15. this.sourceNode = sourceNode;
  16. this.wasExpand = wasExpand;
  17. }
  18. private static DataFlavor javaJVMLocalObjectFlavor;
  19. private static DataFlavor[] supportedDataFlavors;
  20. public static DataFlavor getJavaJVMLocalObjectFlavor() {
  21. if (javaJVMLocalObjectFlavor == null) {
  22. try {
  23. javaJVMLocalObjectFlavor = new DataFlavor(
  24. DataFlavor.javaJVMLocalObjectMimeType);
  25. } catch (ClassNotFoundException cnfe) {
  26. System.err.println("Cannot create JVM Local Object Flavor "
  27. + cnfe.getMessage());
  28. }
  29. }
  30. return javaJVMLocalObjectFlavor;
  31. }
  32. private static DataFlavor[] getSupportedDataFlavors() {
  33. if (supportedDataFlavors == null) {
  34. DataFlavor localJVMFlavor = getJavaJVMLocalObjectFlavor();
  35. supportedDataFlavors = localJVMFlavor == null ? new DataFlavor[] { DataFlavor.stringFlavor }
  36. : new DataFlavor[] { localJVMFlavor,
  37. DataFlavor.stringFlavor };
  38. }
  39. return supportedDataFlavors;
  40. }
  41. public JTree getSourceTree() {
  42. return sourceTree;
  43. }
  44. public void setSourceTree(JTree sourceTree) {
  45. this.sourceTree = sourceTree;
  46. }
  47. public TreeNode getSourceNode() {
  48. return sourceNode;
  49. }
  50. public void setSourceNode(MutableTreeNode sourceNode) {
  51. this.sourceNode = sourceNode;
  52. }
  53. public boolean isWasExpand() {
  54. return wasExpand;
  55. }
  56. public boolean isDataFlavorSupported(DataFlavor flavor) {
  57. DataFlavor[] flavors = getSupportedDataFlavors();
  58. for (int i = 0; i < flavors.length; i++) {
  59. if (flavor.equals(flavors[i]))
  60. return true;
  61. }
  62. return false;
  63. }
  64. public Object getTransferData(DataFlavor flavor)
  65. throws UnsupportedFlavorException, IOException {
  66. if (flavor.equals(javaJVMLocalObjectFlavor)) {
  67. return this;
  68. } //如果传递的是String类型,用以下操作
  69. /*else if (flavor.equals(DataFlavor.stringFlavor)) {
  70. return getSourceNode().toString();
  71. } */
  72. else
  73. throw new UnsupportedFlavorException(flavor);
  74. }
  75. public DataFlavor[] getTransferDataFlavors() {
  76. return getSupportedDataFlavors();
  77. }
  78. }