JAVA функция копировать/вставить для JTextArea
Как сделать так что-бы бы копировался выделенный текст из JTextArea? Как реализовать функцию вставки текста с буфер обмена?
Ответы (1 шт):
Автор решения: Agzam4
→ Ссылка
Вот код:
...
JButton copy = new JButton("Copy"); // Создаем кнопку
panel.add(copy); // Добавляем кнопку на JPanel
JButton paste = new JButton("Paste");
panel.add(paste);
copy.addActionListener(e -> copy(jTextArea.getSelectedText())); // Добавляем слушатель нажатия на кнопку
paste.addActionListener(e -> {
String text = jTextArea.getText();
jTextArea.setText(text.substring(0, jTextArea.getSelectionStart()) // Текст находящийся до выделенного
+ paste() // Текст из буфера
+ text.substring(jTextArea.getSelectionEnd(), text.length()) // Текст находящийся после выделенного
);
});
}
private void copy(String text) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection = new StringSelection(text);
clipboard.setContents(selection, null);
}
private String paste() {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
DataFlavor flavor = DataFlavor.stringFlavor;
if(clipboard.isDataFlavorAvailable(flavor)) {
try {
return clipboard.getData(flavor).toString();
} catch (UnsupportedFlavorException | IOException e) {
}
}
return "";
}