Поле рисования SWT StyledText

Я пытаюсь нарисовать поле в виджете 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();

}

person P. Raig    schedule 14.03.2017    source источник
comment
Вы не можете просто рисовать на элементе управления в любое время, рисование должно выполняться только в обработчике события рисования элемента управления. Существующие обработчики событий будут перезаписывать то, что вы нарисовали.   -  person greg-449    schedule 14.03.2017
comment
Возможно полезно: Как рисовать дочерние элементы Композит в SWT? - ваш прямоугольник рисуется за StyledText, который заполняет Shell.   -  person avojak    schedule 14.03.2017