2013-08-12 3 views
0

Я нашел here: что я искал, но все же у меня есть некоторые проблемы.Reload EditorPane

Это мой код действия:

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) throws IOException { 

    jEditorPane1.setContentType("text/html"); 


    int returnVal = FileChooser1.showOpenDialog(this); 
    if (returnVal == FileChooser1.APPROVE_OPTION) { 


String image = String.format("<img src=\"%s\">", FileChooser1.getSelectedFile()); 
    jEditorPane1.setText(image); 

    } 
} 

Вот скриншот того, что происходит, как вы можете видеть изображение не загружается. http://postimg.org/image/agc665ih1/

Но если я сохраню файл (с кнопкой сохранения) и снова откроет тот же файл (с открытой кнопкой), изображение будет там и будет полностью загружено.

Я уже пробовал методы .repaint() и .revalidate(), но не работает. Есть идеи?

ответ

0

Возможно, это проблема при настройке пути на странице JEditorPane. используйте это:

String image = String.format("<img src=\"%s\">", FileChooser1.getSelectedFile().getPath()); 

Я предполагаю, что вы уже выбрали соответствующий редакторKit для JEditorPane.

+0

Нет Я получаю тот же результат:/ Для JEditorPane я выбрал HTMLEditorKit(), код выглядеть: \t \t jEditorPane1.setEditorKit (новый HTMLEditorKit()) ; – DJack

+0

Как вы открываете изображение, можете ли вы вставить этот код? – Ashwani

+0

Я думаю, что это не проблема, но я вставлю код, как только я смогу ответить на свой вопрос, потому что мне приходится ждать несколько часов из-за моей репутации .. :) – DJack

0

Итак, теперь я могу ответить своим кодом. Я использую этот класс для выбора файлов:

import java.io.File; 

импорта javax.swing.filechooser.FileFilter;

класс jpgfilter расширяет FileFilter {

public boolean accept(File file) { 
     return file.isDirectory() || file.getAbsolutePath().endsWith(".jpg"); 
    } 

    public String getDescription() { 

     return "JPG image (*.jpg)"; 
    } 

}

И в моем главном классе у меня есть это:

FileChooser1 = new javax.swing.JFileChooser(); 
    FileChooser1.setDialogTitle("Choose your image:"); 
    FileChooser1.setFileFilter(new jpgfilter()); 

И это все.

0

Так что я действительно нашел какое-то решение, но я думаю, что есть очень много кода, и я должен делать это легко. Я действительно вставляю изображение и одновременно сохраняю и открываю содержимое EditorPane как .html-файл ,

Код:

jEditorPane1.setContentType("text/html"); 

    int returnVal = FileChooser1.showOpenDialog(this); 
    if (returnVal == FileChooser1.APPROVE_OPTION) { 

     String image = String.format("<img src=\"%s\">", FileChooser1 
       .getSelectedFile().getPath()); 

     jEditorPane1.setText(image); 

     String type = jEditorPane1.getContentType(); 

     OutputStream os = new BufferedOutputStream(new FileOutputStream(
       "/Library/java_test/temp" + ".html")); 

     Document doc = jEditorPane1.getDocument(); 
     int length = doc.getLength(); 

     if (type.endsWith("/rtf")) { 
      // Saving RTF - use the OutputStream 
      try { 
       jEditorPane1.getEditorKit().write(os, doc, 0, length); 
       os.close(); 
      } catch (BadLocationException ex) { 
      } 
     } else { 
      // Not RTF - use a Writer. 
      Writer w = new OutputStreamWriter(os); 
      jEditorPane1.write(w); 
      w.close(); 
     } 

     String url = "file:///" + "/Library/java_test/temp" + ".html"; 

     jEditorPane1.setPage(url); 

    }