Java:文字列のcopy&paste処理にClipboard
だいぶ暖かくなってきましたね。
マイド、管理人イガジーです。
コピー&ペースト(コピペ)は、マウス操作やキー操作でよく使うと思います。
SHIFT+カーソルキー で文字列の範囲指定、
CTRL+C でコピー、
CTRL+V でペースト、
などは、Windowsだけでなく、Linux(Gnome)などでも使えます。
Javaで、このコピペをボタンなどに割り当てる場合には
Clipboard (java.awt.datatransfer.Clipboard) を使います。
具体例としては、初期化は
Clipboard clp=Toolkit.getDefaultToolkit().getSystemClipboard();
という感じです。
フィールドに
TextArea tx;
があるとして、次の様なActionListenerで処理ができます。
class CpyC implements ActionListener {
このActionListenerをボタンなどに割り当てます。
@Override
public void actionPerformed(ActionEvent e) {
StringSelection ss=new StringSelection(tx.getText());
clp.setContents(ss, ss);
}// actionPerformed
} // class CpyC
//
class PasteC implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
try {
tx.setText((String) clp.getData(DataFlavor.stringFlavor));
} catch (UnsupportedFlavorException e1) {
// e1.printStackTrace();
// do nothing
} catch (IOException e1) {
e1.printStackTrace();
}
}// actionPerformed
} // class PasteC
Button cpy=new Button("Copy");
という感じです。
Button pst=new Button("Paste");
cpy.addActionListener(new CpyC());
pst.addActionListener(new PasteC());
上記の例では、TextArea tx全体をコピペの対象にしています。
クリップポードには、文字列以外のものも入れられるので
ペースト時には、DataFlavor.stringFlavor で、文字列を指定しています。