К сожалению, вы ограничены возможностями ОС Windows. Насколько я знаю, эта функциональность недоступна до Windows Vista. Поведение зависит от ОС, как вы могли узнать по этой ссылке SO: Можно ли изменить способ переноса слова виджетом Text SWT?
Ваша лучшая гарантия - добавить изменяющий прослушиватель в текстовый элемент управления, рассчитать ширину элемента управления, используя GC.textExtent()
api, с помощью которого вычислить количество символов, которые он может удерживать (используйте GC.getFontMetrics().getAverageCharWidth()
и вставьте разрыв строки в соответствующие места. Также, если вы выбираете этот подход, имейте в виду, что вы должны также обработать событие resize
или paint
. В противном случае при изменении размера вашего окна логика может дать сбой.
Если вы пытаетесь обосновать содержимое (например, MS Office) в текстовом виджете, вам следует искать SWT StyledText widget
. Например:
>>Code
Взято отсюда Java2s StyledText .
package test;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class StyledTextIndentAlignmentJustify
{
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
StyledText styledText = new StyledText(shell, SWT.WRAP | SWT.BORDER);
String text = "The third paragraph is justified. Like alignment, justify only works " +
"when the StyledText is using word wrap. If the paragraph wraps to several lines, " +
"the justification is performed on all lines but the last one.";
styledText.setText(text);
styledText.setLineJustify(0, 1, true);
shell.setSize(300, 400);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}