我正在为win32或其他支持此功能的Widget寻找解决方案。
我看到另一个问题也是关于这个话题,但是它在GTK上
答案 0 :(得分:2)
不幸的是,您受到Windows操作系统功能的限制。据我所知,此功能不可用直到Windows Vista。您可能已在此SO链接上找到该行为非常特定于操作系统:Is it possible to modify how Text swt widget wrap word?
您最好的保证是在文本控件上添加修改侦听器,使用GC.textExtent()
api计算控件的宽度,使用它计算它可以容纳的字符数(使用GC.getFontMetrics().getAverageCharWidth()
并插入在适当的地方换行。如果你选择这种方法,那么请记住你还必须处理resize
或paint
事件。否则,在调整窗口大小时,逻辑可能会失败。 / p>
如果您试图在“文本”小部件中证明内容(如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();
}
}