关于Java AWT 剪切板的使用

2017-11-20  本文已影响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();

}

}

上一篇下一篇

猜你喜欢

热点阅读