We’ll set the TransferHandler on the JTextArea to be a handler that can drag and drop files, which will overwrite the existing TransferHandler associated with the clipboard and make it disappear.
I couldn’t find a solution to this problem, even after hours of searching Stackoverflow, because it doesn’t happen unless the file is dropped into a JTextField or JTextArea.
This is where ChatGPT comes in as a savior.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
private class CustomTransferHandler extends TransferHandler { private final TransferHandler originalHandler; <pre><code> public CustomTransferHandler(TransferHandler originalHandler) { this.originalHandler = originalHandler; } @Override public boolean canImport(TransferSupport support) { if (support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { return true; } return originalHandler != null && originalHandler.canImport(support); } @Override public boolean importData(TransferSupport support) { if (support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { try { List<File> files = (List<File>) support.getTransferable().getTransferData(DataFlavor.javaFileListFlavor); for (File file : files) { textArea.append(file.getAbsolutePath() + "\n"); } return true; } catch (UnsupportedFlavorException | IOException ex) { ex.printStackTrace(); } return false; } else if (originalHandler != null) { return originalHandler.importData(support); } return false; } @Override protected void exportToClipboard(JComponent comp, Clipboard clipboard, int action) { if (originalHandler != null) { originalHandler.exportToClipboard(comp, clipboard, action); } } |
I loved working with ChatGPT to find the answers.
Written in Korean.
https://chatgpt.com/share/8c34c15e-2d32-4c03-9ec0-f21ee0b6bd22
Below, the above is written in Korean.
JTextArea에 TransferHandler를 파일 드래그 앤 드롭이 가능한 핸들러로 설정하게 되는데 이렇게 하면 기존 클립보드와 연결된 TransferHandler가 덮어씌워져서 사라지게 된다.
JTextField나 JTextArea에 파일드롭을 하지 않으면 생기지 않은 문제여서 그런지 Stackoverflow를 몇시간 뒤져도 이 문제를 해결 할 방법이 없었다.
여기서 구세주 ChatGPT가 나타남.
ChatGPT와 함께 해답을 찾아가는 과정이 너무 좋았다.
https://chatgpt.com/share/8c34c15e-2d32-4c03-9ec0-f21ee0b6bd22
한글로 검색해서 들어올 사람은 없을것 같으니 DeepL로 번역한 영어로 씀.
이전에도 안풀리는 문제가 있어서 ChatGPT한테 물어보니 답은 아니어도 힌트를 얻어서 해결한 적이 있는데,
이번에는 ChatGPT가 해결 못하는 부분을 내가 힌트를 줘서 ChatGPT가 답을 찾는 장면이 나왔다.
이런건 구글 검색으로도 해결하지 못하는 문제라서 AI가 아주 인상적인 능력을 보여주는 것 같다.