Я хочу реализовать DnD в моей системе, перетащив узел из JTree и поместив его в JLabel.
JLabel - это Icon с определенными свойствами о машине, и, перетаскивая информацию из узла JTree на JLabel, я хочу, чтобы он мог отправлять сообщение клиенту, прослушивающему эту машину.
Любая помощь очень ценится!
Пример метода метки:
private void makeLabel(String html, final String version) {
// Create a button to link to the DR environment
//JButton button = new JButton(html);
JLabel machineLabel = new JLabel();
machineLabel.setTransferHandler(new TransferHandler("text"));
MouseListener listener = new DragMouseAdapter();
machineLabel.addMouseListener(listener);
machineLabel.setIcon(onlineIcon);
machineLabel.setToolTipText("IP: " + html);
//Add the button to the panel and make sure it appears
machineLabel.setSize(25, 10);
vecIcons.addElement(machineLabel);
buttonPanel.add(machineLabel);
buttonPanel.setVisible(true);
buttonPanel.validate();
dynaScrollPane.validate();
buttonPanel.repaint();
dynaScrollPane.repaint();
}
Метод DragMouseAdapter:
private class DragMouseAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
JComponent c = (JComponent) e.getSource();
TransferHandler handler = c.getTransferHandler();
handler.exportAsDrag(c, e, TransferHandler.LINK);
}
}
Тогда, чтобы сделать мое дерево перетаскиваемым, у меня просто есть:
exampleTree.setDragEnabled(true);