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

広告

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

copyメソッド :

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

cutメソッド :

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

pasteメソッド :

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

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

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

JTextField text = new JTextField("初期値");
texta.cut();
text.copy();
text.paste();

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

サンプルプログラム

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

SSample13_1.java

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

class SSample13_1 extends JFrame{

  JTextField text;

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

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

    JPanel p = new JPanel();

    text = new JTextField("東京都港区赤坂", 25);

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

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

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

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

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

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

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

テキストフィールドに入力された値の一部を選択し「COPY」ボタンを押します。

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

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

選択されていた部分がクリップボードにコピーされます。次に、テキストフィールドの中で貼り付けを行い箇所にキャレットを移動し、「PASTE」ボタンを押します。

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

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

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

カットの場合はコピーと同じく選択した部分をクリップボードにコピーしますが、コピーした選択されていた部分が削除されます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)