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 "";
    }
→ Ссылка