现在的位置: 首页 > 综合 > 正文

Clipboard 剪切板的应用&&Action

2018年05月27日 ⁄ 综合 ⁄ 共 2548字 ⁄ 字号 评论关闭

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

}


抱歉!评论已关闭.