* 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());
*
*
* 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(); } }