* Clipboard 剪切板的应用
* Clipboard 此类实现一种使用剪切/复制/粘贴操作传输数据的机制。
*
* 1.0://获取系统 Clipboard 的一个实例,该 Clipboard 可作为本机平台提供的剪贴板工具的接口*****
* Clipboard clip=Toolkit.getDefaultToolkit().getSystemClipboard();
*
* 1.1:将剪贴板的当前内容设置到指定的 transferable 对象
* clip.setContents(Transferable contents, owner);
*
* 1.2:StringSelection实现传输 String 所需能力的 Transferable实现类。
* StringSelection contents=new StringSelection(jta.getSelectedText());
*
* 1.3:返回是否能够以指定的 DataFlavor 形式提供此剪贴板的当前内容。
* clip.isDataFlavorAvailable(DataFlavor.stringFlavor)
*
* 1.4://得到剪切板里面的数据
* String str=(String) clip.getData(DataFlavor.stringFlavor);
* 1.5: //在指定的位置处粘贴
* jta.replaceRange(str, jta.getSelectionStart(), jta.getSelectionEnd());
*
*
* Clipboard 此类实现一种使用剪切/复制/粘贴操作传输数据的机制。
*
* 1.0://获取系统 Clipboard 的一个实例,该 Clipboard 可作为本机平台提供的剪贴板工具的接口*****
* Clipboard clip=Toolkit.getDefaultToolkit().getSystemClipboard();
*
* 1.1:将剪贴板的当前内容设置到指定的 transferable 对象
* clip.setContents(Transferable contents, owner);
*
* 1.2:StringSelection实现传输 String 所需能力的 Transferable实现类。
* StringSelection contents=new StringSelection(jta.getSelectedText());
*
* 1.3:返回是否能够以指定的 DataFlavor 形式提供此剪贴板的当前内容。
* clip.isDataFlavorAvailable(DataFlavor.stringFlavor)
*
* 1.4://得到剪切板里面的数据
* String str=(String) clip.getData(DataFlavor.stringFlavor);
* 1.5: //在指定的位置处粘贴
* jta.replaceRange(str, jta.getSelectionStart(), jta.getSelectionEnd());
*
*
* 2:Action 的具体应用
demo
public class ActionClipboard extends JFrame {
JTextArea jta=new JTextArea(5,30);
JToolBar jtb=new JToolBar();
JMenuBar jmb=new JMenuBar();
JMenu edit=new JMenu("编辑");
//获取系统 Clipboard 的一个实例,该 Clipboard 可作为本机平台提供的剪贴板工具的接口
Clipboard clip=Toolkit.getDefaultToolkit().getSystemClipboard();
Action copy=new AbstractAction("复制",new ImageIcon("images/copy.gif")) {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 将剪贴板的当前内容设置到指定的 transferable 对象
// clip.setContents(Transferable contents, owner);
// StringSelection实现传输 String 所需能力的 Transferable实现类。
StringSelection contents=new StringSelection(jta.getSelectedText());
clip.setContents(contents, null);
// 返回是否能够以指定的 DataFlavor 形式提供此剪贴板的当前内容。
if(clip.isDataFlavorAvailable(DataFlavor.stringFlavor));
{
//激活
paste.setEnabled(true);
}
}
};
Action paste=new AbstractAction("粘贴",new ImageIcon("images/paste.gif"))
{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(clip.isDataFlavorAvailable(DataFlavor.stringFlavor));
{
try{
//得到剪切板里面的数据
String str=(String) clip.getData(DataFlavor.stringFlavor);
//在指定的位置处粘贴
jta.replaceRange(str, jta.getSelectionStart(), jta.getSelectionEnd());
}catch(Exception e1){
e1.printStackTrace();
}
}
}
};
public ActionClipboard()
{
paste.setEnabled(false);
JButton copyBtn=new JButton(copy);
JButton pasteBtn=new JButton(paste);
/**
* 向界面中加入Action
*/
JPanel jp=new JPanel();
jp.add(copyBtn);
jp.add(pasteBtn);
/**
* 向工具条中加入Action
*/
jtb.add(copy);
//设置不同按钮之间的距离
jtb.addSeparator();
jtb.add(paste);
//设置工具条和工具按钮之间的距离
jtb.setMargin(new Insets(5,5,5,5));
/**
* 向菜单中加入工具
*/
edit.add(copy);
edit.add(paste);
jmb.add(edit);
this.setJMenuBar(jmb);
this.add(jp,BorderLayout.SOUTH);
this.add(jtb,BorderLayout.NORTH);
this.add(jta);
this.pack();
this.setTitle("Action剪切板案例");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ActionClipboard s=new ActionClipboard();
}
}