Java 选择性拖放
我有两个JList和两个JTextField,我希望能够从一个JList拖动到其中一个JTextField,然后另一个JList将拖动到另一个JTextField,但是我不希望第一个JList能够拖放到第二个文本字段,反之亦然。那么我该怎么做呢?我已经浏览了Oracle java教程,但没有发现任何有用的东西 下面是我在JTextfields上使用的TransferHandler类:Java 选择性拖放,java,drag-and-drop,Java,Drag And Drop,我有两个JList和两个JTextField,我希望能够从一个JList拖动到其中一个JTextField,然后另一个JList将拖动到另一个JTextField,但是我不希望第一个JList能够拖放到第二个文本字段,反之亦然。那么我该怎么做呢?我已经浏览了Oracle java教程,但没有发现任何有用的东西 下面是我在JTextfields上使用的TransferHandler类: class CustomTransferHandler extends TransferHandler { in
class CustomTransferHandler extends TransferHandler {
int action;
public CustomTransferHandler(int action) {
this.action = action;
}
public int getSourceActions(JComponent c) {
return COPY;
}
public Transferable createTransferable(JComponent c) {
return new StringSelection(((JTextComponent) c).getSelectedText());
}
public boolean canImport(TransferHandler.TransferSupport support) {
// for the demo, we'll only support drops (not clipboard paste)
if (!support.isDrop()) {
return false;
}
// we only import Strings
if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) {
return false;
}
boolean actionSupported = (action & support.getSourceDropActions()) == action;
if (actionSupported) {
support.setDropAction(action);
return true;
}
return false;
}
public boolean importData(TransferSupport ts) {
try {
((JTextComponent) ts.getComponent())
.setText((String) ts
.getTransferable()
.getTransferData(DataFlavor.stringFlavor));
return true;
} catch(UnsupportedFlavorException | IOException e) {
return false;
}
}
}