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);
}
}
}
分享到:
相关推荐
swing中的jlist 代码中定义了两个jlist 从一个jlist双击列表项可以将该项从这个列表删除并添加至另外一个列表中去
NULL 博文链接:https://lisaiyu.iteye.com/blog/783135
关于java中jlist的一些用法,。。
构造函数中传递String数组给JList添加内容,同时给JList添加滚动条。
使用JList 显示图片并动态改变显示的图片!
JList多选值的获取, 由JList组件实现的列表框有3种选取模式,设置方法为通过JList类的setSelectionMode(int selectionMode)方法,该方法的入口参数可以通过ListSelectionModel类中的静态常量设置。
JList 上下左右拖动,例子说明.上下左右拖动
JLIst的使用,主要是介绍基础
java构建几种个性的JList,可以用图片,可以拖动JList控件
JList事件监听器方法实现代码
自定义的JList,像android的ListView,可以点击按钮后马上删除当前条,并即时显示最新数据,有点数据驱动UI的感觉。Swing自定义控件必备。
javaswing更酷的Jlist.pdf
在JList列表框 中盛放 CheckBox复选框,并可以实现列表中的项上下移动和鼠标拖动列表项进行移动,可以直接运行
swing JList 拖拽记录到 JTable
这是我之前做的一个项目要实现的一个功能,Jlist 动态添加删除移动Jcheckbox
重新实现了CellRenderer,可同时显示图片和文字
文档中介绍了JList控件的简单使用方法,包括对列表点击事件的处理。
实现Jlist带上了图片标签 主要用上了ListCellRenderer
jlist应用例子,JLIST应用例子,移动举例
JFC Swing活学活用系列之定制JList显示.rar