Java SWT样式文本绘制框

Java SWT样式文本绘制框,java,swt,styledtext,Java,Swt,Styledtext,我试图在StyledText小部件中画一个框来包围我的文本。我正在使用以下代码,但失败了。我知道这是可以做到的,因为我发现我已经尝试和工作的样本。我错过了什么 public void print(Display display) { Shell shell = new Shell(display); shell.setLayout(new FillLayout()); shell.setSize(500, 500); StyledText st=new Sty

我试图在StyledText小部件中画一个框来包围我的文本。我正在使用以下代码,但失败了。我知道这是可以做到的,因为我发现我已经尝试和工作的样本。我错过了什么

public void print(Display display) {

    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    shell.setSize(500, 500);

    StyledText st=new StyledText(shell,SWT.BORDER);
    shell.open();

    //line one
    String one=String.format("Character Name: %-25s   Player Name: ___________________________\n",WordUtils.capitalize(name));

    st.setText(one);
    Point topLeft=st.getLocationAtOffset(0);
    GC gc=new GC(st.getShell());
    gc.setForeground(display.getSystemColor(SWT.COLOR_RED));
    gc.drawRectangle(topLeft.x - 1, topLeft.y, 20, 15);
    gc.dispose();

}

在过去的任何时候都不能只在控件上绘制,绘制只能在控件的绘制事件处理程序中完成。现有的事件处理程序将覆盖您绘制的内容。可能会有帮助:-您的矩形将绘制在填充
Shell的
样式文本
后面。