| |
14. 112. 8. Transfer both Text and Color between JTextField and JTextArea |
|
import java.awt.Color;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.TransferHandler;
import javax.swing.text.JTextComponent;
public class DnDDemo2 {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new JPanel());
JTextField textField = new JTextField(25);
textField.setText("Let's swing higher");
frame.add(textField);
JTextArea textArea = new JTextArea("Demonstrating\ndrag and drop");
textArea.setForeground(Color.red);
frame.add(new JScrollPane(textArea));
textArea.setDragEnabled(true);
textField.setDragEnabled(true);
TextColorTransferHandler transferHandler = new TextColorTransferHandler();
textArea.setTransferHandler(transferHandler);
textField.setTransferHandler(transferHandler);
frame.pack();
frame.setVisible(true);
}
}
class TextColorTransferHandler extends TransferHandler {
public int getSourceActions(JComponent c) {
return COPY_OR_MOVE;
}
protected Transferable createTransferable(JComponent component) {
String text = ((JTextComponent) component).getText();
Color color = component.getForeground();
TextColor transferable = new TextColor(text, color);
return transferable;
}
public boolean canImport(JComponent c, DataFlavor[] flavors) {
return true;
}
public boolean importData(JComponent component, Transferable transferable) {
String colorMimeType = DataFlavor.javaJVMLocalObjectMimeType + ";class=java.awt.Color";
JTextComponent textComponent = (JTextComponent) component;
try {
DataFlavor colorFlavor = new DataFlavor(colorMimeType);
Color color = (Color) transferable.getTransferData(colorFlavor);
String text = (String) transferable.getTransferData(DataFlavor.stringFlavor);
textComponent.setForeground(color);
textComponent.setText(text);
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
}
class TextColor implements Transferable {
private String text;
private Color color;
private DataFlavor[] flavors;
public TextColor(String text, Color color) {
String colorMimeType = DataFlavor.javaJVMLocalObjectMimeType + ";class=java.awt.Color";
DataFlavor colorFlavor = null;
try {
colorFlavor = new DataFlavor(colorMimeType);
} catch (ClassNotFoundException e) {
}
flavors = new DataFlavor[2];
flavors[0] = DataFlavor.stringFlavor;
flavors[1] = colorFlavor;
this.text = text;
this.color = color;
}
public DataFlavor[] getTransferDataFlavors() {
return (DataFlavor[]) flavors.clone();
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
for (int i = 0; i < flavors.length; i++) {
if (flavor.equals(flavors[i])) {
return true;
}
}
return false;
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if (flavor.equals(flavors[0])) {
return text;
} else if (flavor.equals(flavors[1])) {
return color;
} else {
throw new UnsupportedFlavorException(flavor);
}
}
}
//Reference:
//Java 6 New Features: A Tutorial
//by Budi Kurniawan
//Brainy Software Corp. 2006
//Chapter 4 - Networking
//# ISBN-10: 0975212885
//# ISBN-13: 978-0975212882
|
|
14. 112. Drag Drop | | 14. 112. 1. | Basic drag and drop | | | | 14. 112. 2. | Dragging Text from a JLabel | | | | 14. 112. 3. | Drag-and-Drop Support for Images | | | | 14. 112. 4. | Drag and drop icons: use an icon property. | | | | 14. 112. 5. | implements DragGestureListener, Transferable | | | | 14. 112. 6. | Dragging and dropping text between a text area, a list, and a table | | | | 14. 112. 7. | Drag and drop between JTextArea and JTextField | | | | 14. 112. 8. | Transfer both Text and Color between JTextField and JTextArea | | | | 14. 112. 9. | Drag and drop between JList and JTextField | | | | 14. 112. 10. | DropMode.ON | | | | 14. 112. 11. | DropMode.INSERT | | | | 14. 112. 12. | DropMode.ON_OR_INSERT | | | | 14. 112. 13. | Set tree DropMode to DropMode.USE_SELECTION | | | | 14. 112. 14. | Set tree drag mode to DropMode.ON | | | | 14. 112. 15. | Set tree drag mode to DropMode.INSERT | | | | 14. 112. 16. | Set tree drag mode to DropMode.ON_OR_INSERT | | | | 14. 112. 17. | Choose Drop Action | | | | 14. 112. 18. | Various drop actions | | | | 14. 112. 19. | JTable drag and drop | | | | 14. 112. 20. | Create a drag source a drop target and a transferable object. | | | | 14. 112. 21. | Making a Component Draggable | | | | 14. 112. 22. | Detect a drag initiating gesture in your application | | | | 14. 112. 23. | Illustrates cut, copy, paste and drag and drop using three instances of JList | | | | 14. 112. 24. | Location sensitive drag and drop | | | | 14. 112. 25. | Demonstration of the top-level TransferHandler support on JFrame | | | | 14. 112. 26. | Drag-and-Drop customization: drag the foreground color from the first label and drop it as the background color into the second one | | | | 14. 112. 27. | Demonstrates how to add copy and drag support to a Swing component with TransferHandler | | | | 14. 112. 28. | ScribblePane allows individual PolyLine lines to be selected, cut, copied, pasted, dragged, and dropped | | | | 14. 112. 29. | Built-in drag and drop support: utilize a TransferHandler class | | | | 14. 112. 30. | DND Drag and drop List | | |
|