Без лишних слов перейдем сразу к коду. Друзья, пожалуйста, внимательно читайте комментарии.
Скопируйте код кода следующим образом:
/*Простые операции копирования, вырезания и вставки:
Тестирование копирования: введите текст, выберите текст, нажмите «Копировать», затем поместите курсор в текстовую область справа, нажмите «Вставить». Тестирование: введите текст, выберите текст, затем поместите курсор в текстовую область справа, нажмите «Вырезать».
*/
импортировать javax.swing.*;
импортировать java.awt.*;
импортировать java.awt.datatransfer.*;
импортировать java.awt.event.*;
публичный класс Demo реализует ActionListener
{
частный JFrame jf;
частная JPanel p1, p2, p3 //верх, середина и низ;
частный заголовок JLabel;
частное редактирование JTextArea, showMsg;
личное копирование JButton, вставка, вырезание;
Буфер обмена буфер обмена;//Получаем системный буфер обмена.
общественноеДемо()
{
это.инит();
}
//инициализация интерфейса
публичная недействительная инициализация()
{
jf = новый JFrame («Копировать и вставить»);
p1 = новый JPanel(); //Заголовок хранилища
p2 = new JPanel();//Хранилище JTextArea showMsg
p3 = новая JPanel(); //Кнопка хранилища
title = new JLabel("Копировать, вставить и вырезать демо");
edit = new JTextArea("Пожалуйста, введите содержимое",15,25);
edit.setLineWrap(истина);
showMsg = новый JTextArea (15,25);
showMsg.setLineWrap(истина);
showMsg.setEnabled(ложь);
копировать = новый JButton("Копировать");
вставить = новая JButton («Вставить»);
вырезать = новый JButton("вырезать");
буфер обмена = jf.getToolkit().getSystemClipboard();
p1.setLayout(новый FlowLayout());
p1.setSize(599,30);
p1.add(название);
p2.setLayout(новый FlowLayout());
p2.setBackground(Color.gray);
p2.add(редактировать);
p2.add(showMsg);
p3.setLayout(новый FlowLayout());
p3.add(копия);
p3.add(вставить);
p3.add(вырезать);
//Добавляем механизм прослушивания событий
copy.addActionListener(это);
вставить.addActionListener(это);
Cut.addActionListener(это);
// this.copyStr(копия);
jf.add(p1, BorderLayout.NORTH);
jf.add(p2, BorderLayout.CENTER);
jf.add(p3, BorderLayout.ЮГ);
jf.setLocation(400,200);
jf.setSize(600,450);
jf.setResizable(ложь);
jf.setVisible(истина);
}
//обработка событий
public void actionPerformed (ActionEvent e)
{
если (e.getSource() == копировать)
{
String tempText = edit.getSelectedText(); //Перетащите мышь, чтобы выбрать текст
//Создаем Transferable, который может передавать указанную строку.
Выбор строки editText =
новый StringSelection (tempText);
/**
Устанавливает текущее содержимое буфера обмена в указанный передаваемый объект,
И регистрирует указанного владельца буфера обмена как владельца нового содержимого.
*/
clipboard.setContents(editText,null);
}иначе если(e.getSource() == вырезать)
{
Строка tempText = edit.getSelectedText();
Выбор строки editText =
новый StringSelection (tempText);
clipboard.setContents(editText,null);
int start = edit.getSelectionStart();
int end = edit.getSelectionEnd();
showMsg.replaceRange("",start,end); //Удалить выделенный текст из Text1.
}иначе если(e.getSource() == вставить)
{
Передаваемое содержимое = clipboard.getContents(this);
DataFlavor = DataFlavor.stringFlavor;
если (content.isDataFlavorSupported(вкус))
{
пытаться
{
Строка ул;
ул = (String)contents.getTransferData(вкус);
showMsg.append(str);
} catch (исключение ex)
{
ex.printStackTrace();
}
}
}
}
public static void main(String[] args)
{
новая демонстрация();
}
}
Код очень прост и удобен в использовании. Если у вас есть идеи получше, обязательно сообщите мне.