java drag and drop_Java Drag and Drop

package com.what21.jdk16.demo16;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class DragAndDropDemo {

/**

* @param args

*/

public static void main(String[] args) {

JFrame frame = new JFrame("Drag and Drop Demo");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setContentPane(new JPanel());

JTextField textField = new JTextField(25);

textField.setText("www.what21.com");

frame.add(textField);

JTextArea textArea = new JTextArea(4, 25);

textArea.setText("Demonstrating\ndrag and drop");

frame.getContentPane().add(new JScrollPane(textArea));

textArea.setDragEnabled(true);

textField.setDragEnabled(true);

frame.pack();

frame.setVisible(true);

}

}

package com.what21.jdk16.demo16;

import java.awt.BorderLayout;

import java.awt.Rectangle;

import java.awt.datatransfer.DataFlavor;

import java.awt.datatransfer.Transferable;

import javax.swing.DefaultListModel;

import javax.swing.DropMode;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextField;

import javax.swing.TransferHandler;

public class DragAndDropDemo2 {

/**

* @param args

*/

public static void main(String[] args) {

JPanel north = new JPanel();

north.add(new JLabel("Drag from here:"));

JTextField field = new JTextField(10);

field.setDragEnabled(true);

north.add(field);

final DefaultListModel listModel = new DefaultListModel();

listModel.addElement("first");

listModel.addElement("second");

final JList list = new JList(listModel);

list.setDragEnabled(true);

list.setTransferHandler(new TransferHandler() {

public boolean canImport(TransferHandler.TransferSupport support) {

if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) {

return false;

}

JList.DropLocation dl = (JList.DropLocation) support

.getDropLocation();

if (dl.getIndex() == -1) {

return false;

} else {

return true;

}

}

public boolean importData(TransferHandler.TransferSupport support) {

if (!canImport(support)) {

return false;

}

Transferable transferable = support.getTransferable();

String data;

try {

data = (String) transferable

.getTransferData(DataFlavor.stringFlavor);

} catch (Exception e) {

return false;

}

JList.DropLocation dl = (JList.DropLocation) support

.getDropLocation();

int index = dl.getIndex();

if (dl.isInsert()) {

listModel.add(index, data);

} else {

listModel.set(index, data);

}

Rectangle r = list.getCellBounds(index, index);

list.scrollRectToVisible(r);

return true;

}

});

JScrollPane center = new JScrollPane();

center.setViewportView(list);

list.setDropMode(DropMode.USE_SELECTION);

JPanel cp = new JPanel();

cp.setLayout(new BorderLayout());

cp.add(north, BorderLayout.NORTH);

cp.add(center, BorderLayout.CENTER);

JFrame frame = new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setContentPane(cp);

frame.pack();

frame.setVisible(true);

}

}

package com.what21.jdk16.demo16;

import java.awt.BorderLayout;

import java.awt.datatransfer.DataFlavor;

import java.awt.datatransfer.Transferable;

import java.awt.datatransfer.UnsupportedFlavorException;

import java.io.IOException;

import javax.swing.DropMode;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextField;

import javax.swing.JTree;

import javax.swing.TransferHandler;

import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.tree.DefaultTreeModel;

import javax.swing.tree.TreePath;

public class DragAndDropDemo3 {

/**

* @param args

*/

public static void main(String args[]) {

JFrame f = new JFrame();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel top = new JPanel(new BorderLayout());

JLabel dragLabel = new JLabel("Drag me:");

JTextField text = new JTextField();

text.setDragEnabled(true);

top.add(dragLabel, BorderLayout.WEST);

top.add(text, BorderLayout.CENTER);

f.add(top, BorderLayout.NORTH);

final JTree tree = new JTree();

final DefaultTreeModel model = (DefaultTreeModel) tree.getModel();

tree.setTransferHandler(new TransferHandler() {

public boolean canImport(TransferHandler.TransferSupport support) {

if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)

|| !support.isDrop()) {

return false;

}

JTree.DropLocation dropLocation = (JTree.DropLocation) support

.getDropLocation();

return dropLocation.getPath() != null;

}

public boolean importData(TransferHandler.TransferSupport support) {

if (!canImport(support)) {

return false;

}

JTree.DropLocation dropLocation = (JTree.DropLocation) support

.getDropLocation();

TreePath path = dropLocation.getPath();

Transferable transferable = support.getTransferable();

String transferData;

try {

transferData = (String) transferable

.getTransferData(DataFlavor.stringFlavor);

} catch (IOException e) {

return false;

} catch (UnsupportedFlavorException e) {

return false;

}

int childIndex = dropLocation.getChildIndex();

if (childIndex == -1) {

childIndex = model.getChildCount(path

.getLastPathComponent());

}

DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(

transferData);

DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) path

.getLastPathComponent();

model.insertNodeInto(newNode, parentNode, childIndex);

TreePath newPath = path.pathByAddingChild(newNode);

tree.makeVisible(newPath);

tree.scrollRectToVisible(tree.getPathBounds(newPath));

return true;

}

});

JScrollPane pane = new JScrollPane(tree);

f.add(pane, BorderLayout.CENTER);

tree.setDropMode(DropMode.USE_SELECTION);

f.setSize(300, 400);

f.setVisible(true);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值