我想将文本从一个 jlabel 移动到另一个,但由于某种原因,只有复制工作而不移动。我在 handler.exportAsDrag(comp, e, TransferHandler.MOVE); 中使用了 transferhandler 只有 TransferHandler.COPY 有效。
add1 = new JLabel("", JLabel.CENTER);
add1.setTransferHandler(new TransferHandler("text"));
add1.setBorder(b2);
add2 = new JLabel("", JLabel.CENTER);
add2.setTransferHandler(new TransferHandler("text"));
add2.setBorder(b2);
MouseListener listener = new DragMouseAdapter();
add1.addMouseListener(listener);
add2.addMouseListener(listener);
panel2a.add(add1);
panel2a.add(add2);
他们使用这个私有内部类被拖动
private class DragMouseAdapter extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
JComponent comp = (JComponent)e.getSource();
TransferHandler handler = comp.getTransferHandler();
//c.setOpaque(true);
handler.exportAsDrag(comp, e, TransferHandler.MOVE);
}
}