美文网首页
关于Java AWT 剪切板的使用

关于Java AWT 剪切板的使用

作者: 禅绕此心 | 来源:发表于2017-11-20 20:54 被阅读0次

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

    }

    }

    相关文章

      网友评论

          本文标题:关于Java AWT 剪切板的使用

          本文链接:https://www.haomeiwen.com/subject/gosbvxtx.html