我目前正在构建一个文字处理器,用于用Java编写的多窗口媒体注释工具。电影学生可以撰写论文,并将其与多媒体剪辑相关联。
我希望用户能够突出显示rtf文档中的文本,并在项目中创建指向媒体文件的链接。单击时,链接将在其关联的窗口中显示媒体。
我想知道是否可以在Java中的rtf文档中动态创建超链接?例如,可以在Word中使用。
目前我正在使用JEditorPane和高级RTF编辑器套件(http://java-sl.com/advanced_rtf_editor_kit.html)。我正在努力寻找任何解决方案。
任何帮助或指示非常感谢。
谢谢
编辑:
代码,第1部分和第1部分3来自@ Eric的回答
`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();
}
}
}
});`
答案 0 :(得分:2)
我认为你的问题有很多部分:
1。替换Document
中的所选文字:
获取所选范围:
int start = editorpane.getSelectionStart();
int end = editorpane.getSelectionEnd();
将文字替换为:
editorpane.getDocument().remove(start,end);
editorpane.getDocument().insertString(start, newString, null);
注意:如果需要,请将null
替换为实际属性集。
2. :创建RTF格式的超链接。我认为this post拥有一切。
3。对超链接点击进行反应:As explained in the docs,您必须在编辑器窗格中添加HyperlinkListener
以打开相应的媒体。但是,这样做的一个条件是,当单击超链接时,编辑器工具包会生成HyperlinkEvent
个。这肯定是HTML文档的情况,但由于您使用的是第三方库,我无法确认它的工作方式是否相同......