`
Danker.Dai
  • 浏览: 68520 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Jlist中元素的拖入拖出

阅读更多

Jlist中拖出,则该JList  setTransferHandler(new TransferHandler(){

    @Override
   public int getSourceActions(JComponent c){


    }

   

    @Override

   protected Transferable createTransferable(JComponent c){

    

    }

} ):

拖入到 dragInList中 则 dragInLis. setTransferHandler(new TransferHandler(){

 


   @Override

   public boolean importData(TransferSupport support) {

       if( canImport( support ) ){

             // TODO add to dragInList

        }


    }

 

     public boolean canImport(TransferSupport support) {


     }

   

} ):

 

package _2010_1_22;

import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;

import javax.swing.DefaultListModel;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.TransferHandler;

public class JlistImport extends JPanel {
    private JList dragInList = null;
    private JList dragOutList = null;
    private DefaultListModel dragInListModel =null;

    //拖入数据到 dragInList
    public JList getDragInList() {
        if (dragInList == null) {
            dragInList = new JList();
            dragInList.setModel(getDragInListModel());
            dragInList.setTransferHandler(new TransferHandler() {
                //重置数据导入方法
                @Override
                public boolean importData(TransferSupport support) {
                    if (canImport(support)) {
                        Transferable reportObject = support.getTransferable();
                        TransferableParameter parameter = (TransferableParameter)reportObject;
                        getDragInListModel().addElement(parameter.getData());
                        return true;
                    }
                    return false;
                }
                //判断能否拖入数据,如从
dragOutList 中拖出的,则可以拖入到 dragInList 中
                public boolean canImport(TransferSupport support) {
                    boolean canImport = false;
                    Transferable reportObject = support.getTransferable();
                    try{
                        TransferableParameter parameter = (TransferableParameter)reportObject;
                        if(parameter.getSourceComponent() == dragOutList){
                            canImport = true;
                        }

                    }catch (Exception e) {
                    }
                    return canImport;
                }
            });
        }
        return dragInList;
    }
    private DefaultListModel getDragInListModel(){
        if(dragInListModel ==null){
            dragInListModel = new DefaultListModel();
        }
        return dragInListModel;
    }

//从dragOutList 中拖出数据
    public JList getDragOutList() {
        if (dragOutList == null) {
            dragOutList = new JList();
            dragOutList.setTransferHandler(new TransferHandler() {
                @Override
                public int getSourceActions(JComponent c) {
                    if (c == dragOutList) {
                        return TransferHandler.COPY;
                    }
                    return super.getSourceActions(c);
                }
               //创建拖出数据
                @Override
                protected Transferable createTransferable(JComponent c) {
                    if (c == dragOutList) {
                        String name = "data";
                        TransferableParameter parameter = new TransferableParameter(dragOutList,name);
                        return parameter;
                    }
                    return super.createTransferable(c);
                }
            });
        }
        return dragOutList;
    }
    class TransferableParameter implements Transferable {
        protected  String localParameterType = DataFlavor.javaJVMLocalObjectMimeType + ";class=com.angelman.framework.workspace.ProjectTreeReportItemParameter";
        public  DataFlavor localParameterFlavor = null;
        private DataFlavor[] columnFlavors = new DataFlavor[] { localParameterFlavor };

        private JComponent sourceComponent = null;
        private Object data = null;
        public TransferableParameter(JComponent sourceComponent,Object data) {
            this.sourceComponent = sourceComponent;
            this.data = data;
            try {
                localParameterFlavor = new DataFlavor(localParameterType);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }

        public JComponent getSourceComponent() {
            return sourceComponent;
        }

        public Object getData() {
            return data;
        }

        public void setData(Object data) {
            this.data = data;
        }

        public void setSourceComponent(JComponent sourceComponent) {
            this.sourceComponent = sourceComponent;
        }

        @Override
        public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
            if (isDataFlavorSupported(flavor)) {
                return this;
            }
            return null;
        }

        @Override
        public DataFlavor[] getTransferDataFlavors() {
            return columnFlavors;
        }

        @Override
        public boolean isDataFlavorSupported(DataFlavor flavor) {
            if (flavor == null) {
                return false;
            }
            return localParameterFlavor.equals(flavor);
        }

    }
}

0
0
分享到:
评论

相关推荐

    JList中使用JCheckBox示例

    在Java Swing库中,`JList`是一个常用的组件,用于展示一系列可选择的项。它通常用于用户需要从多个选项中进行单选或多选的场景。在这个示例中,我们将探讨如何在`JList`中集成`JCheckBox`,使得用户能够通过勾选复...

    swing中jlist点击事件demo

    swing中的jlist 代码中定义了两个jlist 从一个jlist双击列表项可以将该项从这个列表删除并添加至另外一个列表中去

    图片+文字的Jlist

    在Java编程中,`JList` 是Swing组件库中的一个关键部分,它用于展示一系列的选项或元素供用户选择。在默认情况下,`JList` 只能显示字符串元素,但通过自定义渲染器(CellRenderer),我们可以扩展其功能以显示更...

    JList的一些用法

    ### JList在Java中的应用与特性详解 #### 引言 在Java的Swing图形用户界面库中,`JList`组件提供了展示列表项的强大功能,不仅能够支持单列或多列显示,还提供了丰富的事件处理机制,使得它成为构建用户交互界面时...

    JAVA JList使用例子

    在这个例子中,`items`数组定义了`JList`要显示的元素,`new JList(items)`创建了一个新的`JList`实例,并用这些元素填充了列表。 为了使`JList`可以在屏幕空间有限的情况下仍能完全显示所有内容,通常会为其添加...

    JList动态改变图片

    在Java Swing库中,`JList`是一个常用的组件,用于展示一系列可选择的项。在这个特定的情况下,我们探讨的是如何利用`JList`来显示图片,并实现这些图片的动态变化。这在创建图像库、画廊应用或者进行图形用户界面...

    JList example

    在Java编程语言中,`JList` 是Swing库中的一个组件,用于显示一组可选择的项目。`JList` 可以用作单选或多选列表,常用于创建下拉菜单、列表视图等用户界面元素。在这个例子中,我们将深入探讨`JList` 的使用方法,...

    JList事件监听器的实现例子

    在Java Swing库中,`JList`是一个非常重要的组件,用于显示一组可选择的项。在用户与`JList`进行交互时,如选择、取消选择等操作,我们可能需要捕获这些事件并做出响应。这就涉及到事件监听器的使用。本教程将详细...

    javaswing更酷的Jlist.pdf

    JavaSwing 中的 JList 组件自定义渲染器 JavaSwing 是一个功能强大且灵活的 GUI 组件库,提供了许多自定义组件的方式。JList 是其中的一个重要组件,用于显示列表数据。但是,JList 的默认外观并不美观,如何...

    JList 上下左右拖动

    在Java Swing库中,`JList`是一个常用的组件,用于展示一系列可选择的项。它在用户界面设计中常用于创建列表视图,允许用户通过单击或键盘导航来选择项目。在本教程中,我们将深入探讨如何实现`JList`的上下左右拖动...

    自定义JList

    在Java Swing库中,`JList`是一个常用的组件,用于展示一系列可选择的项。然而,标准的`JList`功能有限,有时我们需要对其进行自定义,以满足特定的应用场景需求,比如实现类似Android中`ListView`的效果。在这个...

    java构建几种个性的JList

    在Java编程中,`JList` 是Swing组件库中的一个关键部分,它用于展示一系列选项,用户可以选择其中的一个或多个。本篇文章将深入探讨如何使用Java构建具有各种特性的`JList`,包括添加图片、实现拖放功能以及自定义...

    Java Swing组件:Jlist学习笔记

    为了使 JList 在内容超出容器大小时能够自动滚动,通常会将其放入 `JScrollPane` 容器中。 ```java JList<String> list = new JList(items); JScrollPane scrollPane = new JScrollPane(list); scrollPane....

    Java实现从数据库读取数据放入JList中.doc

    ### Java实现从数据库读取数据放入JList中的关键技术点 #### 一、项目背景与目的 本案例旨在演示如何利用Java编程语言从数据库中提取数据,并将其展示在JList组件中。这一技术常用于需要从数据库获取信息并实时更新...

    java_swing_更酷的Jlist.

    对于那些希望为列表增加更多视觉元素(如图片)的应用程序来说,使用 `ListCellRenderer` 接口可以大大增强 `JList` 的表现力。本文将详细介绍如何使用 `ListCellRenderer` 来创建一个更加美观且功能丰富的 `JList` ...

    JFC Swing活学活用系列之定制JList显示.rar

    例如,如果我们希望在JList中显示带有图标的项,可以这样编写: ```java public class CustomListRenderer extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList...

    JList点击空白处不让其选中最后一项

    在Java Swing中,`JList` 是一个常用的组件,用于展示一系列可选择的项。当用户点击`JList`的空白区域时,默认行为是选中列表的最后一项。这对于某些应用场景,比如带有右键菜单的界面,可能会带来不便,因为用户...

    JList多选值的获取

    在Java Swing中,`JList` 组件被广泛用于创建用户界面中的列表框。不同于选择框(通常指`JComboBox`),`JList` 支持多种选择模式,使得用户能够灵活地进行单选或多选操作。本文将详细介绍如何通过`JList` 实现不同...

    用JComboBox和JList实现的一个文件浏览器组件

    在Java Swing中,`JComboBox`和`JList`是两种常用的用户界面组件,用于创建交互式的下拉列表和多选列表。在这个“文件浏览器组件”中,它们被巧妙地结合在一起,为用户提供了一个功能丰富的文件浏览和选择的界面。这...

    JList的使作

    JLIst的使用,主要是介绍基础

Global site tag (gtag.js) - Google Analytics