시스템 클립 보드에 저장할 때 Java 프로그램의 텍스트 서식을 유지하는 방법을 파악하는 데 문제가 있습니다.서식이 지정된 cliboard Java
Microsoft의 워드 패드 또는 Lotus Symphony와 같이 작동하지 않습니다. 반대로, Word에서 서식이 지정된 문자열을 만들고 복사하면 모든 붙여 넣기를 시도하는 모든 평가판이 제대로 작동합니다.
org.eclipse. *와 같은 외부 소스를 사용하고 싶지 않습니다.
다음은 올바른 방향으로 지적 할 수 있도록 컴파일 한 링크입니다.
나는 적절한 데이터 풍미를 사용하지 않는 것처럼 느껴 집니까? http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/datatransfer/DataFlavor.html
이 링크는 dataflavors에 대해 많은 이야기를하고 있지만 형식이 지정된 텍스트에 어떤 것이 사용되는지에 대해서는별로 알려주지 않았습니다. 나는 이것이 모든 OS에서 동일하지 않을 수도 있지만 그것이 내가 사용하는 OS에서 지원되는지 확인해야한다고 이해한다. 고급에서 당신의 도움의 모든
덕분에, 정말 감사!
댄
편집 나는 현재 일부 코드를 사용하고
: 몇 가지 작은 변화 http://lists.apple.com/archives/java-dev/2004/Jul/msg00359.html. 현재 제가 겪고있는 문제는 두 가지 형식으로 클립 보드에 데이터를 전송해야한다는 것입니다. "text/rtf"및 "text/plain"은 일부 프로그램이 RTF를 지원하지 않는 것을 보았습니다. 나는 내부 클립 보드를 사용하여 클립 보드 안에 무엇이 있는지보고 있습니다. RTF 또는 일반 텍스트를 성공적으로 배치 할 수 있지만 동시에 둘 다 배치 할 수는 없습니다. 내가 할 때 마지막 사람 만 추가됩니다. 당신의 도움은 대단히 감사합니다!
요약하면 두 가지 다른 데이터 형식으로 클립 보드를 동시에 설정할 수는 없습니다. 많은 주변 검색 및 친구 세바스찬 로건에서 시행 착오 도움 후
import java.awt.datatransfer.*;
import java.io.*;
public class clipBoard
{
public static final String RTF_STRING = "{\\rtf1\\ansi\\deff0 {\\fonttbl {\\f0 Courier;}}\r \n{\\colortbl;\\red0\\green0\\blue0;\\red255\\green0\\blue0;}\r\nThis line is the default color\\line\r\n\\cf2\r\n\\tab This line is red and has a tab before it\\line\r\n\\cf1\r\n\\page This line is the default color and the first line on page 2\r\n}\r\n";
public static final DataFlavor RTF_FLAVOR = new DataFlavor("text/rtf", "Rich Formatted Text");
public static void main(String[] args){
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable t = new MyTransferable(
new ByteArrayInputStream(RTF_STRING.getBytes()), RTF_FLAVOR);
cb.setContents(t, null);
}
static class MyTransferable implements Transferable
{
private Object data = null;
private DataFlavor flavor;
public MyTransferable(Object o, DataFlavor df)
{ data = o; flavor = df; }
public Object getTransferData (DataFlavor df) throws
UnsupportedFlavorException, IOException
{
if (!flavor.isMimeTypeEqual(flavor))
throw new UnsupportedFlavorException(df);
return data;
}
public boolean isDataFlavorSupported (DataFlavor df)
{
return flavor.isMimeTypeEqual(df);
}
public DataFlavor[] getTransferDataFlavors()
{
DataFlavor[] ret = {flavor};
return ret;
}
}
}
당신은 우리가 코드를 추가 – MadProgrammer
으로 테스트 할 수있는 작업 예제를 붙여 넣을 수 없습니다. 감사! – dannyn382