2012-08-22 4 views
2

특정 파일 보고서를 찾기 위해 파일 시스템을 스캔하고 테이블에 나열하는 프로그램 (GUI = JavaFX)이 있습니다. 이 XML 보고서는 웹 브라우저에서 XSLT로 렌더링됩니다. 이제 Java 응용 프로그램에서 이러한 보고서를 클릭하여 브라우저에 표시 할 수있게하려고합니다. 이미 핸들러를 작성 했으므로 올바른 URL이 결정됩니다. 내 Windows 시스템에서 이것은Java가 웹 브라우저에서 XML을 열도록 강요합니다.

file://localhost/C:/report.xml 

입니다. XML은 문제가 아닙니다. 브라우저에서 수동으로 열면 모든 것이 잘 동작합니다.

java.awt.Desktop.getDesktop(). 
    browse(new java.net.URI("file://localhost/C:/report.xml")); 

이 HTTP URL을 (웹 사이트)에 대한 좋은 해결책이기 때문에, 그것은 항상 내 기본에 내 XML 파일을 엽니 다 : 나는 구글을 사용하고 브라우저에서 파일을 여는 방법을 묻는 경우는 항상 나에게 준다 텍스트 편집기 (예 : 메모장 + +). 따라서 데스크탑의 탐색 메소드는 실제로 탐색을 강제하지는 않지만 단순히 기본 열기 조작으로 넘어집니다.

그래서 질문은 : Java가 브라우저에서 "Open with>"Windows 기능과 유사한 XML을 강제로 열도록 할 수 있습니까? 여기

sscce (존재하지 않는 경우에도, 브라우저에서 파일을 액세스하려고한다) :

public class XMLOpener { 
    public static void main(String[] args) 
    { 
    String fileURL = "file://localhost/C:/report.xml"; 
    try { 
     java.awt.Desktop.getDesktop().browse(new java.net.URI(fileURL)); 
    } catch (Exception e) {} 
    } 
} 
+0

더 나은 도움을 받으려면 [sscce] (http://www.sscce.org)를 보내주십시오. – user1329572

+0

감사합니다. ['Desktop.isDesktopSupported()'] (http://docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html#isDesktopSupported%28%29)는 무엇을 반환합니까? – user1329572

+0

Desktop.isDesktopSupported()는 true를 반환합니다. java.awt.Desktop.getDesktop()을 시도하면 browse (새 java.net.URI ("http://www.google.com")); 그것은 예상대로 브라우저를 엽니 다. –

답변

1

awt Desktop.browse 메소드의 JavaFX 대체는 HostServices.showDocument입니다. 시도해 볼 수도 있지만 Desktop.browse와 같은 효과를 낼 것입니다.

Java의 경우 load the XML and perform the XSL transform을 선택한 다음 webview.getEngine.loadContent(contentString, contentType)을 사용하여 JavaFX WebView에 결과 문서를 표시하거나 결과 문서를 레이블 또는 사용자 정의 JavaFX 컨트롤에 표시하면됩니다. JavaFX 2.2에서 JavaFX WebView는 아직 XML 컨텐트 유형을 인쇄하기위한 뷰어를 아직 가지고 있지 않으므로 webview에서 꽤 인쇄 된 xml을 얻으려면 xml을 구문 분석하고 javascript/css/html, this post for displaying formatted java source in a WebView에 나와있는 방법과 유사합니다.

더 많은 개발 작업이 있지만 JavaFX로 디스플레이를 처리하는이 대체 접근법은 결과 문서의 표시를 JavaFX 응용 프로그램 자체에서 캡슐화하고 제어 할 수 있으므로 의존하지 않습니다. 호스트 환경에 설치 될 수도 있고 설치되지 않을 수도있는 브라우저 및 구성.

+0

HostServices.showDocument 같은 효과가 있습니다. 응용 프로그램 내부에 내용을 표시하는 경우 : 문제의 기능에 대한 구현 노력이 너무 높습니다. 그러나 조언을 주셔서 감사합니다. –

1

만약 URI, browse 출시 "응용 프로그램을 처리 할 수없는 브라우저 지정된 유형의 URI를 처리하기 위해 등록 된 "이 호출됩니다."

좋아하는 브라우저가 있는지 (Chrome, Fx, O, IE 등) 확인하거나 다른 방법으로 확인한 다음 execute a custom command을 가져옵니다. 당신이 운영하고있는 OS를 안다면 (Windows), 당신은 단지 그것을위한 exec 라인 만 고려할 필요가 있습니다.

관련 문제