我的目的是编写一个NASTRAN文本编辑器(纯文本编辑器,eclipse纯E4 RCP应用程序)。 NASTRAN是一种工程结构分析应用程序。 简化,NASTRAN使用每个字段宽度为8个字符的文本卡,每张卡最多10个字段(行)。 见图到目前为止完成的工作
此编辑器的主要功能是显示带有彩色列背景的纯文本(固定间距字体),因此可以轻松区分每行中的不同字段。
我使用了StyledText
控件,它提供了更改背景的方法:
styledText.setBackgroundImage(backgroundImage);
如何使用StyledText
的IDocument界面,以便它可以为我提供支持:
文字操纵
位置
分区
线路信息
等...
其他文本控件(TextViewer,SourceViewer)提供了加载和操作文本数据的setDocument(IDocument)方法
--org.eclipse.jface.text.TextViewer
|
--org.eclipse.jface.text.source.SourceViewer
但是StyledText
扩展了SWT Canvas,并没有提供设置输入文档的方法
--org.eclipse.swt.custom.StyledText
替代方法可能是如何在SourceViewer控件中更改背景,以便我可以使用不同颜色的列。
提前致谢
答案 0 :(得分:1)
TextViewer和SourceViewer是StyledText的包装器,并提供处理IDocument接口的代码,因此您应该使用其中一个。
您可以调用查看器的getTextWidget()
方法来访问他们正在使用的StyledText
控件。
答案 1 :(得分:0)
感谢greg-449的回答,问题解决了。 我没有清楚地理解包含另一个类的类的概念。所以我首先尝试创建一个StyledText对象。 现在很清楚了
我已经在下面附上了我的进展:创建一个SourceViewer控件,然后获取StyledText包装。 所以我可以设置控件的背景图像
public class NastranEditor {
public StyledText st = null;
public SourceViewer sv = null;
private Image backgroundImage;//The image to appear at the backgroud
//....
@PostConstruct
public void postConstruct(Composite parent){
IVerticalRuler ruler = new VerticalRuler(20);
sv = new SourceViewer(parent, ruler, SWT.MULTI | SWT.V_SCROLL);
st = sv.getTextWidget();
st.setBackgroundImage(backgroundImage);
//....
}
//....
}