java操作剪贴板代码示例

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

public class ClipdoardUsage {

  public static void main(String[] args) {

    // Create a frame
    Frame frame = new Frame("Example Frame");

    /*
      * Create a container with a flow layout, which arranges its children 
      * horizontally and center aligned.
      * A container can also be created with a specific layout using
      * Panel(LayoutManager) constructor, e.g.
      * Panel(new FlowLayout(FlowLayout.RIGHT)) for right alignment
      */
    Panel panel = new Panel();

    // Add a text area in the center of the frame
    final TextArea textArea = new TextArea("This is a sample text...");
    frame.add(textArea, BorderLayout.CENTER);

    // Add several buttons to the container
    Button copyToClipboardButton = new Button("Copy to clipboard");
    Button pasteFromClipboardButton = new Button("Paste from clipboard");
    panel.add(copyToClipboardButton);
    panel.add(pasteFromClipboardButton);

    // Add action listener to copyToClipboardButton for copying textArea content to clipboard
    copyToClipboardButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent evt) {
            setStringToClipboard(textArea.getText());
        }
    });

    // Add action listener to pasteFromClipboardButton for pasting clipboard content to textArea
    pasteFromClipboardButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent evt) {
            textArea.setText(getStringFromClipboard());
        }
    });

    // Add the container to the bottom of the frame
    frame.add(panel, BorderLayout.SOUTH);

    // Display the frame
    int frameWidth = 300;
    int frameHeight = 300;
    frame.setSize(frameWidth, frameHeight);

    frame.setVisible(true);

  }

  // If a string is on the system clipboard, this method returns it; otherwise it returns null.
  public static String getStringFromClipboard() {
    Transferable transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);

    try {
        if (transferable != null && transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {
            String text = (String) transferable.getTransferData(DataFlavor.stringFlavor);
            return text;
        }
    } catch (UnsupportedFlavorException e) {
        System.out.println("Clipboard content flavor is not supported " + e.getMessage());
    } catch (IOException e) {
        System.out.println("Clipboard content could not be retrieved " + e.getMessage());
    }
    return null;
  }

  // This method writes a string to the clipboard.
  public static void setStringToClipboard(String stringContent) {
    StringSelection stringSelection = new StringSelection(stringContent);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
  }

}

标签: isp

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:通过正则表达式提取 Email 地址的Java代码

下一篇:使用commons-codec包加密字符串