JAVA DND

JAVA DND 在官方是这样解释的
//--------------------------------------------------------------------
Introduction to DnD
If you are writing an application you will want to support the ability to transfer information between components in your application. But you will also want your application to play well with others — this includes supporting the ability to transfer information between your application and other Java applications, and between your application and native applications. The ability to transfer data takes two forms
//--------------------------------------------------------------------

java dnd 主要是实现时间的拖放。
在此过程中主要实现:
import java.awt.dnd.*;
下面的:
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DragSourceListener;
同时还有javax.swing.×;下面TransferHandler
javax.swing.TransferHandler

javax.swing.TransferHandler
它有两个构造函数:
TransferHandler() 子类的便捷构造方法。
TransferHandler(String property) 构造一个通过剪贴板或拖放操作可以将 Java Bean 属性从一个组件传输到另一个组件的传输处理程序。
如,JLabel和JTextField都有text这个属性,所以可以很简单地实现从JTextField里拖文本到JLabel里,改变它的文本.下面是一个例子
在textField里输入文本后,往label里拖,label的文本就变为textField里的文本了.如果要实现从label往textField里拖。
package com.mocake.awt.dnd;

import java.awt.*;
import javax.swing.*;

public class LabelDnd {
	private javax.swing.JFrame mainFrame;
	private javax.swing.JPanel mainPanel;
	private javax.swing.JLabel label;
	private javax.swing.JTextField textField;

	public LabelDnd() {
		mainFrame = new JFrame();
		mainPanel = new JPanel(new BorderLayout());
		label = new JLabel("label");
		
		label.setTransferHandler(new TransferHandler("text"));
		textField = new JTextField(20);
		textField.setDragEnabled(true);
		mainPanel.add(label, BorderLayout.PAGE_START);
		mainPanel.add(textField, BorderLayout.PAGE_END);
		mainFrame.getContentPane().add(mainPanel);
		mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainFrame.pack();
		/*setLocationRelativeTo 设置窗口相对于指定组件的位置。 
		如果组件当前未显示,或者 c 为 null,则此窗口将置于屏幕的中央。中点可以使用 GraphicsEnvironment.getCenterPoint 确定。 
		如果该组件的底部在屏幕外,则将该窗口放置在 Component 最接近窗口中心的一侧。因此,如果 Component 在屏幕的右部,则 Window 将被放置在左部,反之亦然。
        */
		mainFrame.setLocationRelativeTo(null);
		mainFrame.setVisible(true);
	}
	public static void main(String args[]) {
		new LabelDnd();
	}

}

你可能感兴趣的:(java,C++,c,bean,swing)