Используйте StyledText#setCaretOffset(int)
для перемещения курсора в положение, в которое вы хотите вставить, а затем используйте StyledText#insert(String)
, чтобы вставить текст. Вот пример:
private static final Random RANDOM = new Random(System.currentTimeMillis());
public static void main(String[] args)
{
Display display = Display.getDefault();
final Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new FillLayout());
final StyledText text = new StyledText(shell, SWT.BORDER);
text.setText("This is the default text");
Button button = new Button(shell, SWT.PUSH);
button.setText("Add random text");
button.addListener(SWT.Selection, new Listener()
{
@Override
public void handleEvent(Event arg0)
{
text.setCaretOffset(RANDOM.nextInt(text.getText().length()));
text.insert("RANDOM TEXT");
}
});
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
Мне нужно иметь кнопку в том же месте, где текст должен быть вставлен. –
@JohnSmith Вы хотите добавить 'Button' в' StyledText'? Если это так, есть пример [здесь] (http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse /swt/snippets/Snippet217.java). – Baz
Да, я хочу сделать это. –