How would I make a paste from java using the system clipboard?

前端 未结 6 1869
我寻月下人不归
我寻月下人不归 2021-01-02 21:35

I want to make a paste from the system clipboard in java. How would I do this?

相关标签:
6条回答
  • 2021-01-02 21:48

    Try this

    public static void type(String characters) {
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    StringSelection stringSelection = new StringSelection( characters );
    clipboard.setContents(stringSelection, instance);
    //control+V is for pasting...
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    }
    
    0 讨论(0)
  • 2021-01-02 21:56

    You could use the robot class like this

    try
    {
        Robot r = new Robot();
        r.keyPress(KeyEvent.VK_CONTROL);
        r.keyPress(KeyEvent.VK_V);
        r.keyRelease(KeyEvent.VK_CONTROL);
        r.keyRelease(KeyEvent.VK_V);
    
    }
    catch(Exception e)
    {
    
    }
    
    0 讨论(0)
  • 2021-01-02 21:58

    You have to use Java graphics library, eg. take a look at http://download.oracle.com/javase/1,5.0/docs/api/java/awt/datatransfer/Clipboard.html

    0 讨论(0)
  • 2021-01-02 22:04

    You could also try using the Clipboard class.

    0 讨论(0)
  • 2021-01-02 22:11

    You can use the Clipboard class as follows to achieve the paste:

    public static void getClipboardContents() {
            String result = "";
            Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
            //odd: the Object param of getContents is not currently used
            Transferable contents = clipboard.getContents(null);
            boolean hasTransferableText =
              (contents != null) &&
              contents.isDataFlavorSupported(DataFlavor.stringFlavor)
            ;
            if (hasTransferableText) {
        
    
      try {
                result = (String)contents.getTransferData(DataFlavor.stringFlavor);
                System.out.print(result);
              }
              catch (UnsupportedFlavorException | IOException ex){
                System.out.println(ex);
                ex.printStackTrace();
              }
            }
          }
    

    The content from the system clipboard is found in the result string variable. Solution coming from: http://www.javapractices.com/topic/TopicAction.do?Id=82

    0 讨论(0)
  • 2021-01-02 22:12

    While the robot class would work, it's not as elegant as using the system clipboard directly, like this:

    private void onPaste(){
        Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable t = c.getContents(this);
        if (t == null)
            return;
        try {
            jtxtfield.setText((String) t.getTransferData(DataFlavor.stringFlavor));
        } catch (Exception e){
            e.printStackTrace();
        }//try
    }//onPaste
    
    0 讨论(0)
提交回复
热议问题