当前位置: 代码迷 >> Java相关 >> 跪求JAVA大神帮忙~关于复制数据自动显示的有关问题
  详细解决方案

跪求JAVA大神帮忙~关于复制数据自动显示的有关问题

热度:57   发布时间:2016-04-22 21:24:57.0
跪求JAVA大神帮忙~关于复制数据自动显示的问题
功能是这样的:复制一个文本,按了ctrl+C后在显示框中能够直接显示复制内容。实现动态复制,动态实时显示。不知道怎么实现。

现在我只能实现先复制数据,然后再打开java程序,java程序上能显示复制的内容。

具体代码如下:
TestG.java  实现获取剪贴板内容的函数

package cuttest;

import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;

public class TestG{
public static String getSysClipboardText()
{
String ret = "";
Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
// 获取剪切板中的内容
Transferable clipTf = sysClip.getContents(null);
// 检查内容是否是文本类型
try {
ret = (String) clipTf.getTransferData(DataFlavor.stringFlavor);
} catch (Exception e) {
e.printStackTrace(); 
}
return ret;
}
public static void main(String[] agrs){
try {
System.out.println(new TestG().getSysClipboardText());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}



显示复制内容
 package cuttest;
 
 import java.awt.*;  

import javax.swing.*;  
   
 public class window{  
    public static void main(String[] args){  
        JFrame frame = new JFrame("window");  
        JLabel label = new JLabel("号码");
        JTextField txt1=new JTextField(new TestG().getSysClipboardText());    
        JPanel contentPane = new JPanel();
        frame.setBounds(200,200,200,200);
        contentPane.setLayout(new BorderLayout());  
        contentPane.add(txt1,BorderLayout.CENTER);  
        frame.setContentPane(contentPane);    
        frame.setVisible(true);  
   }  



刚学JAVA不久,望大神指导啊~~~

------解决方案--------------------
有这么变态的要求么?
你只能写一个方法去监听,要是剪贴板里面有数据(或是数据变了)就弹出一个提示框
------解决方案--------------------
恩 监听 ctrl+c
------解决方案--------------------
监听CTRL+C

textArea.addKeyListener(new KeyListener() {

@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}

@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
System.out.println("arg0.getModifiers()=" + e.getModifiers());
System.out.println("arg0.getKeyCode()=" + e.getKeyCode());

// CTRL+C按下
if (e.getModifiers() == 2 && e.getKeyCode() == 67) {
System.out.println("CTRL+C......");
}
}

@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub

}
});
  相关解决方案