コピー/カット/ペーストの使用

広告

クリップボードを経由したコピー/カット/ペーストをテキストエリアで使用する方法を確認します。各機能を利用するメソッドはJTextAreaクラスの親クラスであるJTextComponentクラスで定義されています。

copyメソッド :

関連するテキストモデル内の現在選択されている領域をシステムクリップボードに転送して、テキス
トモデル内のコンテンツはそのまま残します。現在の選択領域は元のまま残ります。選択領域が null
の場合には何も行いません。

cutメソッド :

関連するテキストモデル内の現在選択されている領域をシステムクリップボードに転送して、モデル
からコンテンツを削除します。現在の選択領域は取り消されます。選択領域が null の場合には何も
行いません。 

pasteメソッド :

システムクリップボードのコンテンツを関連するテキストモデルに転送します。関連するビュー内に
選択領域があるときは、クリップボードのコンテンツで置き換えられます。選択領域がないときは、
クリップボードのコンテンツは関連するビュー内の現在の挿入位置の前に挿入されます。クリップ
ボードが空の場合には何も行いません。

copyメソッドを使うとテキストエリアの中で選択されている部分をクリップボードにコピーします。cutメソッドを使うとテキストエリアの中で選択されている部分をクリップボードにコピーする点は同じですが選択部分をテキストエリアから削除します。pasteメソッドを使うとクリップボードにコピーされた値をテキストエリアのキャレットがある位置に挿入します。

実際の使い方は次のようになります。

JTextArea area = new JTextArea("今日の天気は曇りです");
area.cut();
area.copy();
area.paste();

より具体的な利用方法はサンプルを参照して下さい。

サンプルプログラム

では実際に試してみます。

SSample17_1.java

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class SSample17_1 extends JFrame{

  JTextArea area;

  public static void main(String args[]){
    SSample17_1 frame = new SSample17_1("タイトル");
    frame.setVisible(true);
  }

  SSample17_1(String title){
    setTitle(title);
    setBounds(100, 100, 300, 250);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel p = new JPanel();

    area = new JTextArea();
    area.setLineWrap(true);
    JScrollPane scrollpane = new JScrollPane(area);
    scrollpane.setPreferredSize(new Dimension(270, 120));

    JButton buttonCut = new JButton("CUT");
    buttonCut.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent event){
          area.cut();
        }
      }
    );

    JButton buttonCopy = new JButton("COPY");
    buttonCopy.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent event){
          area.copy();
        }
      }
    );

    JButton buttonPaste = new JButton("PASTE");
    buttonPaste.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent event){
          area.paste();
        }
      }
    );

    p.add(scrollpane);
    p.add(buttonCut);
    p.add(buttonCopy);
    p.add(buttonPaste);

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.CENTER);
  }
}

ではコンパイルを行った上で実行してみます。

コピー/カット/ペーストの使用

テキストエリアに文字列を入力します。

コピー/カット/ペーストの使用

カットを試します。テキストエリアに入力された値の一部を選択してから「CUT」ボタンを押して下さい。

コピー/カット/ペーストの使用

コピー/カット/ペーストの使用

選択した部分が削除され、クリップボードにコピーされました。ではテキストエリア内で挿入したい位置にキャレットを移動させてから「PASTE」ボタンを押して下さい。

コピー/カット/ペーストの使用

コピー/カット/ペーストの使用

キャレットの位置にクリップボードにコピーされた値が挿入されました。

コピーの場合はカットと同じく選択した部分をクリップボードにコピーしますがコピー後もテキストエリアからは削除されません。

( Written by Tatsuo Ikura )