SWT文本在错误的位置上断行

时间:2012-03-13 16:25:36

标签: java macos textbox swt

注意:此问题仅在Mac上出现,在Windows上运行正常。

我有一个SWT Text小部件,我想要插入相当大的文本。

//simplified large string from StringBuilder
String something="";
for(int i=0;i<10;i++){
    something += smp1+"\t"+smp2+"\t"+smp3+"\n";
}

final Text text = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL );
text.setBounds(10, 50, 880, 280);
text.setText(something);

问题在于,虽然空间太大(880px),但如果行中有两个以上的“\ t”(制表符)字符,则文本会在400px处中断。当使用“”(空格)在文本框中书写时,该行继续按原样继续,并且不会换行。

将字符串输出到控制台显示它很好,所以我认为问题不在字符串中,而是在Text控件中。

我尝试了所有我能想到的东西,并没有运气解决它。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

SWT中的小部件是由操作系统本地绘制的 - 这是该库的重点。 这就是特定于操作系统的怪癖被“保留”的原因。

虽然Text是本地绘制的,StyledText不是,但它是由SWT“手动”绘制的,以便为所有支持的平台提供高级功能。

所以你可能想尝试StyledText - 是的,这只是一种解决方法,并且具有非本机小部件的理论缺点,如性能较差,行为不同等等,但很可能是你不会发现任何差异。但如果你很幸运,它可以解决你的问题。