【发布时间】:2015-08-10 17:20:17
【问题描述】:
我目前正在构建一个用 Java 编写的用于多窗口媒体注释工具的文字处理器。电影专业的学生可以撰写论文并将其嵌入多媒体剪辑的链接。
我希望用户能够突出显示 rtf 文档中的文本并创建指向项目中媒体文件的链接。单击该链接时,将在其相关窗口中显示媒体。
我想知道是否可以在 Java 的 rtf 文档中动态创建超链接?例如,在 Word 中是可能的。
目前我正在使用带有高级 RTF 编辑器工具包 (http://java-sl.com/advanced_rtf_editor_kit.html) 的 JEditorPane。我正在努力寻找任何解决方案。
非常感谢任何帮助或指针。
谢谢
编辑:
-
代码,添加了@ Eric 答案中的第 1 部分和第 3 部分
`item3.addActionListener(new ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent e) { //use FX thread to open FileChooser Platform.runLater(new Runnable() { @Override public void run() { FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("create link"); String startDirectory = System.getProperty("user.home") + File.separator + "Pictures"; fileChooser.setInitialDirectory(new File(startDirectory)); FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("JPEG files (*.jpg)", "*.jpg"); FileChooser.ExtensionFilter extFilter2 = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.png"); FileChooser.ExtensionFilter extFilter3 = new FileChooser.ExtensionFilter("JPG files (*.jpeg)", "*.jpeg"); fileChooser.getExtensionFilters().addAll(extFilter,extFilter2, extFilter3); File imageFile = fileChooser.showOpenDialog(stage); if(imageFile != null){ Image image = ImageViewerController.getImage(); try { image = new Image(imageFile.toURI().toURL().toExternalForm().toString()); int start = textArea.getSelectionStart(); int end = textArea.getSelectionEnd(); textArea.getDocument().remove(start, end); String newString = "{\field{\*\fldinst HYPERLINK 'http://www.google.com/'}{\fldrslt http://www.google.com}}"; textArea.getDocument().insertString(start, newString , null); textArea.addHyperlinkListener(new HyperlinkListener() { @Override public void hyperlinkUpdate(HyperlinkEvent hle) { if (HyperlinkEvent.EventType.ACTIVATED.equals(hle.getEventType())) { System.out.println(hle.getURL()); Desktop desktop = Desktop.getDesktop(); try { desktop.browse(hle.getURL().toURI()); } catch (Exception ex) { ex.printStackTrace(); } } } }); } catch (Exception e1) { e1.printStackTrace(); } } } });`
【问题讨论】:
标签: java swing rtf jeditorpane