Passing the StyleRanges at once reduces the amount of flashing as the StyledText repaints.
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class StyleRangeSetArray {
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
final StyledText styledText = new StyledText(shell, SWT.V_SCROLL | SWT.BORDER);
styledText.setText("asdfasdfasdfasdf12345678910234567890");
StyleRange[] ranges = new StyleRange[2];
ranges[0] = new StyleRange(0, 3, display.getSystemColor(SWT.COLOR_GREEN), null);
ranges[1] = new StyleRange(3, 6, display.getSystemColor(SWT.COLOR_BLUE), null);
styledText.setStyleRanges(ranges);
styledText.setBounds(10, 10, 500, 100);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}