2014-06-23 27 views
1

我需要創建一個SWT StyledText控件,它爲每個字符顯示等間距的人類可讀字符,就像我們在「記事本」中看到的一樣。Eclipse SWT GUI - StyledText控制 - 每個字符的寬度相等

但是,當我創建文本

 

    StyledText outputText = new StyledText(scrolledComposite_2, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); 
    scrolledComposite_2.setContent(outputText); 
    scrolledComposite_2.setMinSize(outputText.computeSize(SWT.DEFAULT, SWT.DEFAULT)); 
    outputText.setText(data.toString()); 
    outputText.setStyleRange(new StyleRange(0, data.toString().length(), CMFUtils.GREEN, CMFUtils.WHITE)); 
 

當StyledText被顯示在顯示器中的數據,但每一個字符的寬度是不同的。例如,'i'或''(空格)的寬度比'S'等其他字符小,這導致我在下一行使用'^'指向錯誤字符時出現問題。例如:

輸出>>>>
誇誇其談,blah- sdlfk -blah
................^

正如你可以看到,上面的示例字符串中的錯誤出現在第16個字符的「sdlfk」處,並且當我嘗試通過在下一行中放置一個具有16個空格的'^'來指向它時(注意:此示例中的句點將是它被我的原始輸出中的空格替換),它指向字符串中的不同位置。

回答

2

使用等寬SWT字體。

Font font = new Font(display, "Monospaced", 12, SWT.NORMAL); 
outputText.setFont(font); 
// ... 
// In SWT: if you created it, you dispose it. 
font.dispose(); 
+1

但是請記得'處理(')'字體'。否則,你會創建一個內存泄漏。 – Baz

+1

謝謝,添加您對該帖子的評論。 – sina72

+0

感謝您的回答。但不幸的是,SWT並沒有採取它,仍然顯示沒有單聲道間距的文字。 [一個stackoverflow答案](http://stackoverflow.com/questions/221568/swt-os-agnostic-way-to-get-monospaced-font)有一個指向這個錯誤[48055](https:// bugs.eclipse.org/bugs/show_bug.cgi?id=48055)描述了這種行爲。由於我的SWT應用程序總是在Windows上運行,因此我計劃使用「Courier New」作爲等寬字體。 – Parasu