2011-09-23 44 views
1

我有一個微不足道的問題。我需要使用自定義編輯器工具將現有文件加載到JEditorPane。 我有一個編輯工具包,一個擴展名的文件,我需要強制JEditorPane識別我的文件並使用我的編輯工具包。我只發現,這是可能的,但沒有任何方法。JEditorPane和自定義編輯器套件

該工具包也基於HTML和文件。如果文件具有.html擴展名,它可以工作,但是當我將文件重命名爲.xhtbm時,它將以純文本形式打開。內容類型設置爲text/plain,但我無法爲此類型註冊我的編輯器套件,因爲已經爲此內容類型註冊了另一個編輯器套件。

其實問題是:是否真的有可能將一些編輯器套件與某種文件類型關聯?

+1

正如我已經在您的上一個問題中提到http://stackoverflow.com/questions/7525737/how-to-open-html-file-having-another-extension-in-in-jtextpane:_file_名稱沒有什麼用它來做!問題在別的地方... – kleopatra

+0

但它很奇怪。如果文件是test.html,則它可以工作,如果文件已被重命名爲test.htmx,則不起作用。 (內容類型始終是text/plain。HTML的事件。) –

回答

2

設置您的EditorKit並使用該工具包的read()方法將文件傳遞到那裏。

閱讀方法中使用的閱讀器應該理解如何解析內容。

+0

不幸的是,這是不可能的。無論如何,您需要將編輯器套件與適當的MIME關聯。然後它以相同的方式工作:更改擴展名,然後看到包含標記的純文本。 –

+0

可以粘貼示例代碼嗎?它不適合我。該HTML文件被加載,但標籤只消耗。文本顯示在一個博客中,將所有段落和表格的內容合併在一起。 –

+0

內容類型用於從剪貼板獲取正確的內容。例如。當您在MS Word中複製時,會將多種不同類型放置在剪貼板(純文本,html,rtf和二進制內容)中。當你使用read()方法時,它只有一個可以與特定內容一起工作的Reader(開發套件)。 – StanislavL

0

非常感謝斯坦尼斯拉夫。在他的例子中(見the last page of article,方法initEditor())我找到了正確的方法。錯誤是按照命令的順序。這工作:

public void openFile(String fileName) throws IOException { 
    editor.setEditorKit(new ModifiedHTMLEditorKit()); 
    ModifiedHTMLDocument doc = (ModifiedHTMLDocument)editor.getDocument(); 
    try { 
     editor.getEditorKit().read(new FileReader(fileName), doc, 0); 
    } 
    catch (BadLocationException b) { 
     throw new IOException("Could not fill data into editor.", b); 
    } 
} 

然後我打電話openFile("test.xhtbm")和一切都沒有摩擦。

0

,你可以:

static{ 
    // register EditorKit for plaintext content 
    JEditorPane.registerEditorKitForContentType("text/plain", "HtmlEditorKit"); 
} 

你的面前:

public static void main(String[] args){...}

對不起,反應遲緩!