さっそくコードに進みましょう。コメントをよく読んでください。
次のようにコードをコピーします。
/* 単純なコピー、カット、ペースト機能の操作:
コピーテスト: テキストを入力し、テキストを選択して、「コピー」をクリックし、右側のテキストエリアにカーソルを置き、「貼り付け」をクリックします。 カットテスト: テキストを入力し、テキストを選択して、右側のテキストエリアにカーソルを置き、「カット」をクリックします。
*/
javax.swing.* をインポートします。
java.awt.* をインポートします。
インポート java.awt.datatransfer.*;
インポート java.awt.event.*;
public class デモは ActionListener を実装します
{
プライベート JFrame jf;
private JPanel p1、p2、p3 //上、中、下;
プライベート JLabel タイトル。
プライベート JTextArea edit,showMsg;
プライベート JButton のコピー、ペースト、カット。
クリップボード Clipboard;//システム クリップボードを取得します。
publicDemo()
{
this.init();
}
//インターフェースの初期化
パブリック void init()
{
jf = new JFrame("コピーして貼り付け");
p1 = new JPanel() //ストレージタイトル
p2 = new JPanel();//ストレージ JTextArea showMsg
p3 = new JPanel() //ストレージボタン
title = new JLabel("コピー、ペースト、カットのデモ");
edit = new JTextArea("コンテンツを入力してください",15,25);
edit.setLineWrap(true);
showMsg = 新しい JTextArea(15,25);
showMsg.setLineWrap(true);
showMsg.setEnabled(false);
copy = new JButton("コピー");
貼り付け = 新しい JButton("貼り付け");
カット = 新しい JButton("カット");
クリップボード = jf.getToolkit().getSystemClipboard();
p1.setLayout(new FlowLayout());
p1.setSize(599,30);
p1.add(タイトル);
p2.setLayout(new FlowLayout());
p2.setBackground(Color.gray);
p2.add(編集);
p2.add(showMsg);
p3.setLayout(new FlowLayout());
p3.add(コピー);
p3.add(貼り付け);
p3.add(カット);
//イベントリスニング機構を追加
copy.addActionListener(this);
ペースト.addActionListener(this);
Cut.addActionListener(this);
// this.copyStr(コピー);
jf.add(p1, BorderLayout.NORTH);
jf.add(p2, BorderLayout.CENTER);
jf.add(p3, BorderLayout.SOUTH);
jf.setLocation(400,200);
jf.setSize(600,450);
jf.setResizable(false);
jf.setVisible(true);
}
//イベント処理
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == コピー)
{
String tempText = edit.getSelectedText(); //マウスをドラッグしてテキストを選択します
//指定された String を転送できる Transferable を作成します。
StringSelection editText =
新しい StringSelection(tempText);
/**
クリップボードの現在の内容を指定された転送可能なオブジェクトに設定します。
そして、指定されたクリップボードの所有者を新しいコンテンツの所有者として登録します。
*/
クリップボード.setContents(editText,null);
}else if(e.getSource() == カット)
{
文字列 tempText = edit.getSelectedText();
StringSelection editText =
新しい StringSelection(tempText);
クリップボード.setContents(editText,null);
int start= edit.getSelectionStart();
int end = edit.getSelectionEnd();
showMsg.replaceRange("",start,end); //選択したテキストを Text1 から削除します。
}else if(e.getSource() == ペースト)
{
転送可能なコンテンツ = Clipboard.getContents(this);
DataFlavor フレーバー= DataFlavor.stringFlavor;
if(contents.isDataFlavorSupported(フレーバー))
{
試す
{
文字列 str;
str = (String)contents.getTransferData(flavor);
showMsg.append(str);
}catch(例外例)
{
ex.printStackTrace();
}
}
}
}
public static void main(String[] args)
{
新しいデモ();
}
}
コードは非常にシンプルで使いやすいです。もっと良いアイデアがあれば、ぜひ教えてください。