用户选择的图像可以直接插入JEditorPane吗?

时间:2010-06-01 16:05:42

标签: java html image jfilechooser jeditorpane

我要做的是打开一个过滤jpeg,gif和png图像的JFilechooser,然后获取用户的选择并将其插入到JEditorPane中。可以这样做吗?或者我在尝试不可能的事情?这是我的程序示例。(insert是JMenuItem,mainText是JEditorPane)

insert.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
    JFileChooser imageChooser = new JFileChooser();
      imageChooser.setFileFilter(new FileNameExtensionFilter("Image Format","jpg","jpeg","gif","png"));
                int choice = imageChooser.showOpenDialog(mainText);
                if (choice == JFileChooser.APPROVE_OPTION) {
                mainText.add(imageChooser.getSelectedFile());
                }
        }
    });

我尝试做的是使用add方法,我知道这是错的,但只是为了让你知道我正在尝试做什么。 在你抱怨之前,我对代码格式化感到抱歉,我真的不知道所有被认为是好的或坏的风格的惯例。 非常感谢你。

这是我用来保存html文件的代码的一部分。

else if (e.getSource() == save) {
        JFileChooser saver = new JFileChooser();
        saver.setFileFilter(new FileNameExtensionFilter(".html (webpage format)" , "html"));
        int option = saver.showSaveDialog(this);
        if (option == JFileChooser.APPROVE_OPTION) {
            try {
                BufferedWriter out = new BufferedWriter(new FileWriter(saver.getSelectedFile().getPath()));
                out.write(mainText.getText());
                out.close();
            } catch (Exception exception) {
                System.out.println(exception.getMessage());
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

这应该这样做:

mainText.setContentType("text/html");
String image = String.format("<img src=\"%s\">", imageChooser.getSelectedFile());
mainText.setText(image);

答案 1 :(得分:0)

更容易使用JTextPane。然后你可以在文本的任何地方使用insertIcon(...)。

编辑:

我从未尝试过操作HTML,但我之前使用过如下代码:

HTMLEditorKit editorKit = (HTMLEditorKit)textPane.getEditorKit();
text = "<a href=\"abc\">hyperlink</a>";
editorKit.insertHTML(doc, textPane.getCaretPosition(), text, 0, 0, HTML.Tag.A);

所以假设代码与IMG标签类似。