Javaプログラミング/Javaプログラミング関連情報

クリップボードによるテキストの受け渡し(2ページ目)

Javaのプログラムから、クリップボードを経由して他のアプリケーションにテキストを受け渡すにはどうすればよいのでしょう?

執筆者:掌田 津耶乃

クリップボードでテキストを受け渡せるLabelの作成


では、クリップボード利用の例として、「表示テキストをクリップボードの間とやり取りできるラベル」を作成してみましょう。

package jp.allabout;

import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
import java.io.IOException;

import javax.swing.*;

public class SampleApp extends JFrame {
  private JLabel label;
  
  public SampleApp(){
    this.setSize(300, 300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.addWindowListener(new WindowAdapter(){
      public void windowActivated(WindowEvent e){
        label.setText(getTextFromClip());
      }
      public void windowDeactivated(WindowEvent e){
        setTextToClip(label.getText());
      }
    });
    this.addKeyListener(new KeyAdapter(){
      public void keyPressed(KeyEvent e) {
        String msg = label.getText() + e.getKeyChar();
        label.setText(msg);
      }
    });
    label = new JLabel();
    label.addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e){
        if (e.getClickCount() == 2){
          label.setText("");
        }
      }
    });
    this.add(label,BorderLayout.CENTER);
    label.setText(this.getTextFromClip());
  }
  
  public String getTextFromClip(){
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    Transferable object = clipboard.getContents(null);
    String str = "";
    try {
      str = (String)object.getTransferData(DataFlavor.stringFlavor);
    } catch(UnsupportedFlavorException e){
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return str;
  }
  
  public void setTextToClip(String str){
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    StringSelection selection = new StringSelection(str);
    clipboard.setContents(selection, null);
  }
  
  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
}

ウインドウが選択されると、コピーしておいたテキストが表示される。他のソフトに切り替えると、最後に表示されていたテキストがクリップボードにコピーされて渡される。


ウインドウをアクティブにすると、クリップボードに入っているテキストをウインドウ内に表示します。また他のアプリケーションのウインドウをクリックして切り替えると、ウインドウに表示されていたテキストがクリップボードに収められ渡されます。表示テキストの編集機能として、ダブルクリックするとテキストを初期化し、キーをタイプするとそのままテキストがラベルにタイプできるようにしてあります。

ここでは、getTextFromClipとsetTextToClipで、クリップボードからのテキストの取得と、クリップボードへのテキストの保管を行っています。それ以外はそれほど難しい処理ではありません。クリップボード関係のメソッドは、そのまま他に移動して使えますので、それぞれで応用を考えてみるとよいでしょう。
【編集部おすすめの購入サイト】
楽天市場で Java 関連の書籍を見るAmazon で Java 関連の書籍を見る
  • 前のページへ
  • 1
  • 2
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます