java 文本处理函数_java 文本的拖动处理

import javax.swing.*;

import java.awt.dnd.*;

import java.awt.datatransfer.*;

public class DragLabel extends JLabel implements DropTargetListener{

public DragLabel(String str){

super(str);  //调用父类构造函数

}

public void dragEnter(DropTargetDragEvent evt) {

}

public void dragOver(DropTargetDragEvent evt) {

}

public void dropActionChanged(DropTargetDragEvent evt) {

}

public void dragExit(DropTargetEvent evt) {

}

public void drop(DropTargetDropEvent evt) {  //拖动操作处理

try{

Transferable trans = evt.getTransferable(); //得以Transferable对象

if (evt.isDataFlavorSupported(DataFlavor.stringFlavor)){ //是否支持拖动

evt.acceptDrop(evt.getDropAction()); //接受拖动

String s = (String) trans.getTransferData(DataFlavor.stringFlavor); //得到拖动数据

setText(s); //设置标签的文本

evt.dropComplete(true); //结束拖动

}else{

evt.rejectDrop(); //拒绝托运

}

}catch(Exception err){

err.printStackTrace(); //输出出错信息

}

}

}

import java.awt.dnd.*;

import java.awt.datatransfer.*;

import javax.swing.*;

public class DragList extends JList implements DragGestureListener, DragSourceListener{

DragSource dragSource=DragSource.getDefaultDragSource(); //拖动源

public DragList(Object[] data){  //构造函数

super(data);

int action = DnDConstants.ACTION_COPY_OR_MOVE; //拖动类型

dragSource.createDefaultDragGestureRecognizer(this,action,this); //创建拖动识别

}

public void dragGestureRecognized(DragGestureEvent dge) {

try{

Transferable trans = new StringSelection(this.getSelectedValue().toString()); //得到拖动的Transferable对象

dge.startDrag(DragSource.DefaultCopyNoDrop,trans,this);  //开始拖动操作

}catch(Exception err){

err.printStackTrace();  //输出错误信息

}

}

public void dragEnter(DragSourceDragEvent dragSourcede) {  //拖动进入处理

DragSourceContext dragSourceContext = dragSourcede.getDragSourceContext(); //得到拖动上下文对象

int action = dragSourcede.getDropAction(); //得到拖动命令

if ((action&DnDConstants.ACTION_COPY)!=0)  //判断命令类型

dragSourceContext.setCursor(DragSource.DefaultCopyDrop);  //设置光标类型

else

dragSourceContext.setCursor(DragSource.DefaultCopyNoDrop);

}

public void dragOver(DragSourceDragEvent dragSourcede) {

}

public void dropActionChanged(DragSourceDragEvent dragSourcede) {

}

public void dragExit(DragSourceEvent dragSourcee) {

}

public void dragDropEnd(DragSourceDropEvent dragSourcede) {

}

}

实例:

import java.awt.*;

import javax.swing.*;

import javax.swing.JSplitPane;

import java.awt.dnd.*;

//文本的拖动处理

public class DragTextDemo extends JFrame{

public DragTextDemo(){

super("文本的拖动处理"); //调用父类构造函数

String[] data = {"one", "two", "three", "four"}; //字符数组,用于构造列表框

DragList list=new DragList(data); //列表框实例

JTextArea jta=new JTextArea(8,20); //文本框实例

DragLabel label=new DragLabel("拖动目标"); //标签实例

jta.setLineWrap(true); //设置自动换行

jta.setDragEnabled(true); //文本框可拖动

new DropTarget(label,DnDConstants.ACTION_COPY,label); //实例化拖动目标为标签

Container container=getContentPane(); //得到容器

JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); //实例化分隔面板

split.setDividerLocation(140); //设置分隔位置

split.add(list); //增加组件到分隔面板

split.add(jta);

container.add(split,BorderLayout.CENTER);  //增加组件到容器上

container.add(label,BorderLayout.SOUTH);

setSize(300,150);  //设置窗口尺寸

setVisible(true);  //设置窗口为可视

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口时退出程序

}

public static void main(String[] args){

new DragTextDemo();

}

}

效果图:

728dfc85befdf60de4887036557799d4.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值