下面列出了怎么用java.awt.dnd.DragGestureEvent的API类实例代码及写法,或者点击链接到github查看源代码。
private boolean triggerDrag(JFrame f, Point p, DragGestureEvent dge,
JComponent c) {
Rectangle r = new Rectangle(0, 0, c.getWidth(), c.getHeight());
r = SwingUtilities.convertRectangle(c, r, f);
if (r.contains(p)) {
draggingFromToolbar = true;
draggingDefaults = false;
draggingComponent = c.getName();
MockComponent mc = new MockComponent(c);
Transferable transferable = new MockComponentTransferable(mc);
BufferedImage bi = mc.getBufferedImage();
dge.startDrag(DragSource.DefaultMoveDrop, bi, new Point(r.x
- p.x, r.y - p.y), transferable, dragSourceListener);
return true;
}
return false;
}
@Override public void dragGestureRecognized(DragGestureEvent e) {
Optional.ofNullable(e.getComponent())
.filter(c -> c instanceof DnDTabbedPane).map(c -> (DnDTabbedPane) c)
.filter(tabbedPane -> tabbedPane.getTabCount() > 1)
.ifPresent(tabbedPane -> {
Point tabPt = e.getDragOrigin();
int idx = tabbedPane.indexAtLocation(tabPt.x, tabPt.y);
int selIdx = tabbedPane.getSelectedIndex();
// When a tab runs rotation occurs, a tab that is not the target is dragged.
// pointed out by Arjen
boolean isTabRunsRotated = !(tabbedPane.getUI() instanceof MetalTabbedPaneUI)
&& tabbedPane.getTabLayoutPolicy() == JTabbedPane.WRAP_TAB_LAYOUT
&& idx != selIdx;
tabbedPane.dragTabIndex = isTabRunsRotated ? selIdx : idx;
if (tabbedPane.dragTabIndex >= 0 && tabbedPane.isEnabledAt(tabbedPane.dragTabIndex)) {
tabbedPane.initGlassPane(tabPt);
try {
e.startDrag(DragSource.DefaultMoveDrop, new TabTransferable(tabbedPane), new TabDragSourceListener());
} catch (InvalidDnDOperationException ex) {
throw new IllegalStateException(ex);
}
}
});
}
public void dragGestureRecognized( final DragGestureEvent anEvent ) {
final ElementMetaData elementMetaData = ElementTypeRegistry.getInstance().getElementType( elementName );
final ElementMetaDataTransferable transferable = new ElementMetaDataTransferable( elementMetaData );
anEvent.startDrag( DragSource.DefaultCopyNoDrop, EMPTY_DRAG_IMAGE, new Point(), transferable, null );
final ButtonModel model = getModel();
model.setArmed( false );
model.setPressed( false );
}
@Override
public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException {
final LightweightFrame f = SunToolkit.getLightweightFrame(dge.getComponent());
if (f != null) {
return f.createDragSourceContextPeer(dge);
}
return XDragSourceContextPeer.createDragSourceContextPeer(dge);
}
/**
* create the peer for a DragSourceContext
*/
@Override
public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException {
final LightweightFrame f = SunToolkit.getLightweightFrame(dge.getComponent());
if (f != null) {
return f.createDragSourceContextPeer(dge);
}
return WDragSourceContextPeer.createDragSourceContextPeer(dge);
}
public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException {
final LightweightFrame f = SunToolkit.getLightweightFrame(dge.getComponent());
if (f != null) {
return f.createDragSourceContextPeer(dge);
}
return XDragSourceContextPeer.createDragSourceContextPeer(dge);
}
public void dragGestureRecognized(DragGestureEvent dge) {
String [] filesAsStringArray = list.getItems();
File [] files = new File[filesAsStringArray.length];
for (int fileNumber=0; fileNumber<filesAsStringArray.length ; fileNumber++ ) {
files[fileNumber]=new File(filesAsStringArray[fileNumber]);
}
dge.startDrag(null, new FileListTransferable(Arrays.asList(files)));
}
public void dragGestureRecognized(DragGestureEvent dge) {
String [] filesAsStringArray = list.getItems();
File [] files = new File[filesAsStringArray.length];
for (int fileNumber=0; fileNumber<filesAsStringArray.length ; fileNumber++ ) {
files[fileNumber]=new File(filesAsStringArray[fileNumber]);
}
dge.startDrag(null, new FileListTransferable(Arrays.asList(files)));
}
/**
* construct a new SunDragSourceContextPeer
*/
public SunDragSourceContextPeer(DragGestureEvent dge) {
trigger = dge;
if (trigger != null) {
component = trigger.getComponent();
} else {
component = null;
}
}
@Override
public void dragGestureRecognized(DragGestureEvent event) {
TreePath path = tree.getSelectionPath();
if (path != null) {
// Dragged node is a DefaultMutableTreeNode
if(path.getLastPathComponent() instanceof DefaultMutableTreeNode) {
DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode) path.getLastPathComponent();
// This is an ObjectType node
if(treeNode.getUserObject() instanceof ObjectType) {
ObjectType type = (ObjectType) treeNode.getUserObject();
Cursor cursor = null;
if (event.getDragAction() == DnDConstants.ACTION_COPY) {
cursor = DragSource.DefaultCopyDrop;
}
if (RenderManager.isGood()) {
// The new renderer is initialized
RenderManager.inst().startDragAndDrop(type);
event.startDrag(cursor,new TransferableObjectType(type), RenderManager.inst());
} else {
event.startDrag(cursor,new TransferableObjectType(type));
}
}
}
}
}
public void dragGestureRecognized(DragGestureEvent dge) {
java.util.List<URI> uriList = Stream.of(list.getItems())
.map(File::new)
.map(File::toURI)
.collect(Collectors.toList());
dge.startDrag(null, new URIListTransferable(uriList));
}
@Override
public void dragGestureRecognized(DragGestureEvent event) {
mDropReceived = false;
int dragAction = event.getDragAction();
Point where = new Point(event.getDragOrigin());
switch (checkAndConvertToArea(where)) {
case CONTENT:
if (!mIgnoreNextDragGesture && mDragColumnDivider == -1 && !mSelectedRows.isEmpty() && (dragAction & mAllowedRowDragTypes) != 0) {
TreeRowSelection selection = new TreeRowSelection(getSelectedRows(), mOpenRows);
if (DragSource.isDragImageSupported()) {
Img dragImage = createDragImage(where);
Point imageOffset;
Rectangle dragClip = getDragClip();
imageOffset = dragClip != null ? new Point(dragClip.x - where.x, dragClip.y - where.y) : new Point();
event.startDrag(null, dragImage, imageOffset, selection, this);
} else {
event.startDrag(null, selection, this);
}
}
break;
case HEADER:
if (mAllowColumnDrag && dragAction == DnDConstants.ACTION_MOVE && mSortColumn != null) {
setSourceDragColumn(mSortColumn);
if (DragSource.isDragImageSupported()) {
event.startDrag(null, createColumnDragImage(mSortColumn), new Point(-(where.x - getColumnStart(mSortColumn)), -where.y), mSortColumn, this);
} else {
event.startDrag(null, mSortColumn, this);
}
}
mSortColumn = null;
break;
default:
break;
}
}
/**
* construct a new SunDragSourceContextPeer
*/
public SunDragSourceContextPeer(DragGestureEvent dge) {
trigger = dge;
if (trigger != null) {
component = trigger.getComponent();
} else {
component = null;
}
}
public void dragGestureRecognized(DragGestureEvent dge) {
String [] filesAsStringArray = list.getItems();
File [] files = new File[filesAsStringArray.length];
for (int fileNumber=0; fileNumber<filesAsStringArray.length ; fileNumber++ ) {
files[fileNumber]=new File(filesAsStringArray[fileNumber]);
}
dge.startDrag(null, new FileListTransferable(Arrays.asList(files)));
}
public void dragGestureRecognized(DragGestureEvent dge) {
String [] filesAsStringArray = list.getItems();
File [] files = new File[filesAsStringArray.length];
for (int fileNumber=0; fileNumber<filesAsStringArray.length ; fileNumber++ ) {
files[fileNumber]=new File(filesAsStringArray[fileNumber]);
}
dge.startDrag(null, new FileListTransferable(Arrays.asList(files)));
}
protected synchronized void setTrigger(DragGestureEvent dge) {
trigger = dge;
if (trigger != null) {
component = trigger.getComponent();
} else {
component = null;
}
}
protected synchronized void setTrigger(DragGestureEvent dge) {
trigger = dge;
if (trigger != null) {
component = trigger.getComponent();
} else {
component = null;
}
}
/**
* create the peer for a DragSourceContext
*/
@Override
public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException {
final LightweightFrame f = SunToolkit.getLightweightFrame(dge.getComponent());
if (f != null) {
return f.createDragSourceContextPeer(dge);
}
return WDragSourceContextPeer.createDragSourceContextPeer(dge);
}
public void dragGestureRecognized(DragGestureEvent dge) {
java.util.List<URI> uriList = Stream.of(list.getItems())
.map(File::new)
.map(File::toURI)
.collect(Collectors.toList());
dge.startDrag(null, new URIListTransferable(uriList));
}
@Override
public void dragGestureRecognized(DragGestureEvent dge) {
if (mDividerDrag == null && mModel.hasSelection() && allowRowDrag() && hasFocus()) {
Point pt = dge.getDragOrigin();
RowSelection selection = new RowSelection(mModel, mModel.getSelectionAsList(true).toArray(new Row[0]));
if (DragSource.isDragImageSupported()) {
Img dragImage = getDragImage(pt.x, pt.y);
Point imageOffset = new Point(mDragClip.x - pt.x, mDragClip.y - pt.y);
dge.startDrag(null, dragImage, imageOffset, selection, null);
} else {
dge.startDrag(null, selection);
}
}
}
public void dragGestureRecognized(DragGestureEvent dge) {
java.util.List<URI> uriList = Stream.of(list.getItems())
.map(File::new)
.map(File::toURI)
.collect(Collectors.toList());
dge.startDrag(null, new URIListTransferable(uriList));
}
/**
* construct a new SunDragSourceContextPeer
*/
public SunDragSourceContextPeer(DragGestureEvent dge) {
trigger = dge;
if (trigger != null) {
component = trigger.getComponent();
} else {
component = null;
}
}
public DragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException {
final LightweightFrame f = SunToolkit.getLightweightFrame(dge.getComponent());
if (f != null) {
return f.createDragSourceContextPeer(dge);
}
return XDragSourceContextPeer.createDragSourceContextPeer(dge);
}
public void dragGestureRecognized(DragGestureEvent dge) {
String [] filesAsStringArray = list.getItems();
File [] files = new File[filesAsStringArray.length];
for (int fileNumber=0; fileNumber<filesAsStringArray.length ; fileNumber++ ) {
files[fileNumber]=new File(filesAsStringArray[fileNumber]);
}
dge.startDrag(null, new FileListTransferable(Arrays.asList(files)));
}
@Override
public void dragGestureRecognized(DragGestureEvent dge) {
final Point offset = new Point(DRAG_DROP_ICON.getWidth(null), DRAG_DROP_ICON.getHeight(null));
source.startDrag(dge, DragSource.DefaultCopyDrop, DRAG_DROP_ICON, offset, this, null);
}
/**
* construct a new WDragSourceContextPeer. package private
*/
private WDragSourceContextPeer(DragGestureEvent dge) {
super(dge);
}
static XDragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge)
throws InvalidDnDOperationException {
theInstance.setTrigger(dge);
return theInstance;
}
static WDragSourceContextPeer createDragSourceContextPeer(DragGestureEvent dge) throws InvalidDnDOperationException {
theInstance.setTrigger(dge);
return theInstance;
}
protected DragGestureEvent getTrigger() {
return trigger;
}
private XDragSourceContextPeer(DragGestureEvent dge) {
super(dge);
}