Каков наилучший способ вырезать, копировать и вставлять в Java? - PullRequest
3 голосов
/ 03 февраля 2012

Я создал приложение, используя Swing с текстовой областью (JTextArea). Я хочу создать меню «Правка» с параметрами вырезания и копирования текста из текстовой области и вставки текста из буфера обмена в текстовую область.

Я видел несколько способов сделать это, но я хотел знать, какой из них лучший. Как мне реализовать вырезку / копирование / вставку?

Ответы [ 2 ]

14 голосов
/ 03 февраля 2012

Я бы лично выбрал повторное использование стандартных действий вырезания, копирования и вставки. Все это объясняется в руководстве по перетаскиванию Swing: добавление вырезания, копирования и вставки . Раздел о текстовые компоненты является наиболее актуальным для вас. Быстрая копия-вставка кода этой страницы:

menuItem = new JMenuItem(new DefaultEditorKit.CopyAction());
menuItem.setText("Copy");
menuItem.setMnemonic(KeyEvent.VK_C);
5 голосов
/ 03 февраля 2012

В основном для копирования в буфер обмена используются StringSelection и ClipBoard из DefaultToolkit

StringSelection ss = new StringSelection(textarea.getText());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss,this);

и

Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(this);

    try {
        if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
            String text = (String)t.getTransferData(DataFlavor.stringFlavor);
            return text;
        }
    } catch (UnsupportedFlavorException e) {
    } catch (IOException e) {
    }
    return null;

Как указал Эндрю, вы можете сказать, какие другие способы вы видели,Если вы ищете вырезать / копировать / вставить из / в ваше приложение и другие приложения, то вы должны использовать системный буфер обмена.Если функция копирования / вставки специально находится внутри вашего приложения, вы можете реализовать свои собственные способы создания и обслуживания буфера, но метод системного буфера обмена будет самым простым, поскольку вам не нужно заново изобретать колесо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...