gpt4 book ai didi

java - Swing组件添加到ScrollPane(JavaFX)

转载 作者:行者123 更新时间:2023-12-01 09:35:53 27 4
gpt4 key购买 nike

我正在制作 JavaFX 应用程序,它将打开 pdf 文件。我找到了 PDF 查看器的免费库,但它是用 Swing 制作的。所以我需要将 JPanel 添加到 ScrollPane(JavaFX)。我尝试过但没有成功。

我收到此错误:

2016 年 8 月 13 日 9:59:09 下午 org.icepdf.core.pobjects.Document警告:在类路径上未找到 PDF 写入支持。

我在 stackoverflow 上找到了如何将 swing 组件添加到 javafx Pane ,我这样做了,但出现了此错误。

欢迎任何建议。

package application;

import java.awt.Component;
import java.io.File;
import java.net.MalformedURLException;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import org.icepdf.ri.common.ComponentKeyBinding;
import org.icepdf.ri.common.SwingController;
import org.icepdf.ri.common.SwingViewBuilder;

import javafx.embed.swing.SwingNode;
import javafx.scene.Node;
import javafx.scene.layout.Pane;

public class PDFView{

public JPanel viewerComponentPanel;

public static Node showPDF(File sFiles) throws MalformedURLException {

String filePath = sFiles.toURI().toURL().toString();

// build a controller
SwingController controller = new SwingController();

// Build a SwingViewFactory configured with the controller
SwingViewBuilder factory = new SwingViewBuilder(controller);

// Use the factory to build a JPanel that is pre-configured
//with a complete, active Viewer UI.
JPanel viewerComponentPanel = factory.buildViewerPanel();

// add copy keyboard command
ComponentKeyBinding.install(controller, viewerComponentPanel);

// add interactive mouse link annotation support via callback
controller.getDocumentViewController().setAnnotationCallback(
new org.icepdf.ri.common.MyAnnotationCallback(
controller.getDocumentViewController()));


final SwingNode swingNode = new SwingNode();
createAndSetSwingContent(swingNode, viewerComponentPanel);


// Open a PDF document to view
controller.openDocument(filePath);
return swingNode;

}

private static void createAndSetSwingContent(final SwingNode swingNode, JPanel viewerComponentPanel) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
swingNode.setContent(viewerComponentPanel);
}
});
}

}

这是我从 PDFView 类调用方法的主类

for(int i=0;i<fileNumber;i++){

choosedName=sFiles[i].getName();
String ext=choosedName.substring(choosedName.lastIndexOf(".") + 1);

switch (ext) {
case "doc":
break;
case "docx":
break;
case "pdf":

tab = new Tab();
tab.setText(choosedName);
s1=new ScrollPane();
tab.setContent(s1);
s1.setContent(PDFView.showPDF(sFiles[i]));
tpane.getTabs().add(tab);

最佳答案

我下载了icepdf viewercore jar 。并对代码进行最小的更改:

//String filePath = sFiles.toURI().toURL().toString();
String filePath = sFiles.getAbsolutePath();

然后,它对我有用,希望对你也有用......

关于java - Swing组件添加到ScrollPane(JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38936577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com