java 打印API中的继承关系

在API中的我们很容易看到继承关系表示图:

但是复制出来后的内容却不是这样,复制出来的文本上面的“L”变成了“继承者”:

java.lang.Object
  继承者 java.io.Reader
      继承者 java.io.BufferedReader

这里写一个方法来把上面的继承者替换成"L---->":

代码最后生成的效果:

java.lang.Object
L---> java.io.Reader
    L---> java.io.BufferedReader

下面是这个文本替换的代码:

import java.util.Scanner;
import clipboard.util.SysClipboardUtil;
public class GetExtendsStr
{
	public static void main(String[] args)
	{
		//从剪贴板获取文字
		String text=SysClipboardUtil.getSysClipboardText();
		System.out.println(text);
		Scanner scanner=new Scanner(text);
		String line;
		StringBuilder buf=new StringBuilder();
		int i=0;
		System.out.println("------------------");
		while(scanner.hasNext())
		{
			line=scanner.nextLine();
			line=line.trim();//删除前后空白符
			if(line.contains("继承者"))
			{
				line=addTab(i++)+line.replace("继承者", "L--->");
			}
			buf.append(line+"\n");
		}
		System.out.println(buf.toString());
		SysClipboardUtil.setSysClipboardText(buf.toString());
	}
	public static String addTab(int num)
	{
		String tab="    ";
		StringBuilder replaceBuf=new StringBuilder();
		for(int i=0;i<num;i++)
		{
			replaceBuf.append(tab);
		}
		return replaceBuf.toString();
	}
}

这里打包成可执行jar来使用:

这个代码用到了一个从剪贴板中复制文本的工具类:clipboard.util.SysClipboardUtil

这个工具类的代码:具体出处我忘了在哪里了,抱歉。

package clipboard.util;

import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.image.BufferedImage;
import java.io.IOException;

public class SysClipboardUtil
{
	/**
	 * 从剪贴板中获取文本字符串。
	 * @return 剪贴板中的文本。
	 */
	public static String getSysClipboardText()
	{
		String ret = "";
		Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
		// 获取剪切板中的内容
		Transferable clipTf = sysClip.getContents(null);

		if (clipTf != null)
		{
			// 检查内容是否是文本类型
			if (clipTf.isDataFlavorSupported(DataFlavor.stringFlavor))
			{
				try
				{
					ret = (String) clipTf
							.getTransferData(DataFlavor.stringFlavor);
				} catch (Exception e)
				{
					e.printStackTrace();
				}
			}
		}

		return ret;
	}
	/**
	 * 把字符串写到系统剪贴板。
	 * @param writeMe 要写入剪贴板的文本
	 */
	public static void setSysClipboardText(String writeMe)
	{
		Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
		Transferable tText = new StringSelection(writeMe);
		clip.setContents(tText, null);
	}
	/**
	 * 从系统剪贴板获取图片。
	 * @return 系统剪贴板里面的图片。
	 */
	public static BufferedImage getImageFromClipboard()
	{
		try
		{
			Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
			Transferable cc = sysc.getContents(null);
			if (cc == null)
				return null;
			else if (cc.isDataFlavorSupported(DataFlavor.imageFlavor))
				return (BufferedImage) cc
						.getTransferData(DataFlavor.imageFlavor);
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 把图片复制到剪贴板中。
	 * @param image 要复制到剪贴板的图片。
	 */
	public static void setClipboardImage(final Image image)
	{
		Transferable trans = new Transferable()
		{
			public DataFlavor[] getTransferDataFlavors()
			{
				return new DataFlavor[]
				{DataFlavor.imageFlavor};
			}

			public boolean isDataFlavorSupported(DataFlavor flavor)
			{
				return DataFlavor.imageFlavor.equals(flavor);
			}

			public Object getTransferData(DataFlavor flavor)
					throws UnsupportedFlavorException, IOException
			{
				if (isDataFlavorSupported(flavor))
					return image;
				throw new UnsupportedFlavorException(flavor);
			}

		};
		Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans,
				null);
	}

}

我把这个工具类导出成jar包了,这里给出工具类的jar包链接:还在审核中后面补上。



猜你喜欢

转载自blog.csdn.net/qq_21808961/article/details/80522942