我需要创建一个SWT StyledText控件,它显示每个字符具有相等间距的人类可读字符,就像我们在“记事本”中看到的那样。
但是当我创建一个Text
时
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个空格的“^”来指向它时(注意:句点)在这个例子中将被原始输出中的空格替换),它指向字符串中的不同位置。
答案 0 :(得分: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();