关于Java AWT 剪切板的使用
package test;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import javax.swing.*;
import java.awt.datatransfer.*;
public class helloworld extends JFrame implements ActionListener{
JPanel row=new JPanel();
JButton ok=new JButton("ok");
JButton Paste=new JButton("paste");
JTextArea t1=new JTextArea("请点击paste将剪切板中的文本粘贴至此或直接输入你的源文本",10,5);
JTextField t2=new JTextField("请输入你要寻找的词",20);
JTextField t3=new JTextField("",10);
FlowLayout q=new FlowLayout();
public helloworld(){
super("文本查找器@BHK");
try { // 使用Windows的界面风格
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
row.setLayout(q);
row.add(ok);
row.add(Paste);
Paste.addActionListener(this);
ok.addActionListener((ActionListener) this);
setSize(500,500);
BorderLayout flow=new BorderLayout();
setLayout(flow);
add(row,BorderLayout.SOUTH);
add(t1,BorderLayout.CENTER);
add(t2,BorderLayout.NORTH);
add(t3,BorderLayout.WEST);
setVisible(true);
}
public static void setSystemClipboard(String refContent){
//设置为static是为了直接使用,不用new一个该类的实例即可直接使用,即定义的: 类名.方法名
String vc = refContent.trim();//去除字符串的首位空格
StringSelection ss = new StringSelection(vc);//创建能传输指定 String 的 Transferable
Clipboard sysClb=null;
sysClb = Toolkit.getDefaultToolkit().getSystemClipboard();//获得系统剪切板
sysClb.setContents(ss,null);//设定系统剪切板的内容
//Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); //跟上面三行代码效果相同
}
public static String getSystemClipboard(){
//获取系统剪切板的文本内容[如果系统剪切板复制的内容是文本]
Clipboard sysClb=null;
sysClb = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable t = sysClb.getContents(null); //获取剪切板的内容,不存在则返回null
//Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); //跟上面三行代码一样
try {
//如果剪切板的内容存在并且该内容的类型为文本类型
if (null != t && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
String text = (String)t.getTransferData(DataFlavor.stringFlavor);
return text;
}
} catch (UnsupportedFlavorException e) {
//System.out.println("Error tip: "+e.getMessage());
} catch (IOException e) {
} //System.out.println("Error tip: "+e.getMessage());
return null;
}
public void actionPerformed(ActionEvent event) {
String a1,a2=" ";
Object o=event.getSource();
if(o==ok) {
a1=t1.getText();
a2=t2.getText();
int y=a2.length();
int i=0;
int count=0;
while(a1.indexOf(a2,count)!=-1) {
count=a1.indexOf(a2,count)+y;
i++;
}
t3.setText(" "+i+" 次");
}else {
if(o==Paste) {
t1.setText(getSystemClipboard());
}
}
}
public static void main(String args[]) {
helloworld test=new helloworld();
}
}