2010-06-01 28 views
0

我想要做的是打開JFilechooser過濾jpeg,gif和png圖像,然後獲取用戶的選擇並將其插入到JEditorPane中。這可以做到嗎?還是我試圖做一些不可能的事情?下面是我的程序的樣本。(插入是的JMenuItem和的mainText是一個JEditorPane)用戶選擇的圖像是否可以直接插入到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()); 
      } 
     } 
    } 

回答

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); 

所以大概的代碼將similiar IMG標記。

+0

謝謝,這是我正在尋找的,我以某種方式假定JEditorPane和JTextPane會有相同的方法,因爲它們非常相似。 謝謝 – 2010-06-01 22:20:20

+0

是的,但有可能當我把文件保存爲html時,我可以用我的瀏覽器打開它,圖像會以這種方式顯示出來嗎?因爲那是我現在唯一關心的問題。 – 2010-06-01 22:45:52

+0

這兩個組件用於不同的目的。如果你需要HTML格式的文本,那麼這是行不通的。看到我上面的編輯。 – camickr 2010-06-02 00:13:39

0

這應做到:

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

非常感謝你,我一直在試驗和錯誤的情況下這幾天,直到我決定在這裏尋求幫助,謝謝。 – 2010-06-01 18:55:59

+0

以及如果我想在我已經寫過的一些文本的末尾添加它,該怎麼辦?我的意思是,我不能使用setText(mainText.getText()+圖像);因爲那會把它放在車身標籤之外,那麼我能做些什麼呢? – 2010-06-01 19:03:07

+0

@JIM,我會做的是String text = mainText.getText(),然後使用String的substring()方法剪掉最後7個字符()。然後附加您的,並追加新的。子字符串調用可能看起來像text = text.substring(0,text.length() - 7); – jonescb 2010-06-01 20:03:38

相關問題