2012-09-24 3 views
1

javafx 애플리케이션 메뉴 항목에서 Jasper Report에 JRViewer이 포함 된 스윙 JDialog을 표시하십시오. 그러나 JDialogsetModal(true) 이후에도 MODAL이 아니며 javafx 스테이지가 소유하지 않습니다. 어떻게 javafx 단계를 소유자가 JDialog의 만들 수 있습니까? 또는 javafx 스테이지, 장면 내에서 Jasper 보고서를 표시하는 방법?javafx 스테이지를 JDialog의 소유자로 만드시겠습니까?

+0

JavaFX 구성 요소를 Swing 구성 요소의 소유자로 만들 수 없습니다. – ceklock

답변

0

javafx 스테이지, 장면 내에서 재스퍼 보고서를 표시하는 방법은 무엇입니까?

Output HTML from your Jasper report 보고서를 JavaFX WebView에로드하십시오.

javafx 스테이지를 JDialog의 소유자로 만드시겠습니까?

나는 이것이 가능하지 않다고 생각합니다. 응용 프로그램을 Swing 응용 프로그램으로 만들고 Swing JFrame 내부의 JFXPanel 안에 JavaFX 콘텐츠를 호스팅하는 것이 무엇보다 효과적입니다. 그런 다음 스테이지가없고 JDialog의 소유자는 JFXPanel을 호스팅하는 JFrame이 될 수 있습니다.

2

JDialog를 사용하지 마십시오. JavaFX에서는 Stages을 사용합니다. Jasper 보고서를 Scene 안에 넣고 장면을 스테이지에 넣으십시오. 난 당신이 자바 FX 구성 요소 내부 스윙 구성 요소를 넣을 수 없습니다 생각, 그래서 당신은이 링크를 확인해야하십시오처럼 정확하게 작동합니다

  Stage stage = new Stage(); 
      stage.setTitle("Title"); 
      stage.setResizable(false); 
      stage.initModality(Modality.APPLICATION_MODAL); 
      stage.initOwner(primaryStage); 
      stage.initStyle(StageStyle.UTILITY); 

      (...) 

      Scene scene = new Scene(...); 
      stage.setScene(scene); 

스테이지 위의 코드에서하십시오 자바 FX 대화 상자를 만들 수 Integrating JavaFX into Swing Applications

코드 대화.

또한이를 확인 :

How to create a JavaFX dialog?

Hello World, JavaFX Style

0

을 지금은 자바 FX의 스윙 내용이 jdk8
에 도입되어 있기 때문에
은 당신이 지금 필요한 것은 JDK 8
를 설치하는 것을 할 수 있어요

@FXML 
private SwingNode swingNode; 
... 
JasperPrint jasperPrint = JasperFillManager.fillReport(FileName, hash, connect); 
swingNode.setContent(new JRViewer(jasperPrint)); 

오라클 그냥 순수 자바 FX 코드 당신은 내가 자바 FX 8의 JasperReports를 인쇄 미리보기 단계 클래스를 작성했습니다
oracle tutorial embed swing in javaFX

0

이 링크를 따라 할 수있는 다음이 너무
에 대한 튜토리얼을 추가 할 필요가 없다 SwingNode 클래스 사용.

JRViewer와 비교하면 링크 및 부품을 지원하지 않지만 인쇄 미리보기 창에는 필요하지 않습니다. 반면에 코드는 훨씬 더 짧아서 이해하기 쉽고 모든 사람의 필요를 더 쉽게 받아 들일 수 있습니다.

이 클래스의 소스 코드는 GitHub repository에서 무료로 사용할 수 있습니다.

2

첫 번째 (기본) 질문으로 돌아 가기 : 스테이지를 JDialog의 소유자로 만들 수 없습니다.당신이 (AWT-) 프레임 또는를 찾을 때까지 단, SwingNode의 내용을 설정 한 후

swingNode.setContent(xxx); 

당신은 ((... 너무 XXX의 부모의 부모가 될 수 있음) AWT를 XXX의 부모를 얻을 수 있습니다 -) 대화 상자. SwingNode의 경우 JLightweightFrame입니다. 이 객체를 소유자로 사용하여 JDialog를 만들 수 있습니다.

그러나 JavaFX SwingNode 메커니즘에 버그가 있다고 생각합니다. JDialog는 모달 (setModal(true))으로 설정하면 기능적 모달로 표시되지만 주 (JavaFX) 창 뒤에 나타날 수 있습니다. 메인 윈도우를 움직여서 앞쪽으로 가져 오는 것이 가능합니다. 모달 대화 상자가 있다면 가능하지 않아야 할 것이 있습니다. 그러나 이것은 또 다른 주제입니다.

관련 문제