Можно ли вставить выбранное пользователем изображение непосредственно в JEditorPane? - PullRequest
0 голосов
/ 01 июня 2010

Я пытаюсь открыть JFilechooser, который фильтрует изображения в формате jpeg, gif и png, затем получает выбор пользователя и вставляет его в 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 голосов
/ 02 июня 2010

Проще всего использовать JTextPane. Затем вы можете использовать insertIcon (...) в любом месте текста.

Edit:

Мне никогда не удавалось пытаться манипулировать HTML, но я использовал код, подобный следующему:

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

Итак, предположительно, код будет похож на тег IMG.

0 голосов
/ 01 июня 2010

Это должно сделать это:

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