Java 如何根据短文本标签包装长文本标签?

Java 如何根据短文本标签包装长文本标签?,java,swt,jface,Java,Swt,Jface,我在JFace对话框中得到了两个标签。一个是短文本,一个是长文本。我想较长的文字包装时,它的长度超过不应该包装的短文本的长度 导入org.eclipse.jface.dialogs.Dialog; 导入org.eclipse.swt.swt; 导入org.eclipse.swt.layout.GridData; 导入org.eclipse.swt.widgets.Composite; 导入org.eclipse.swt.widgets.Control; 导入org.eclipse.swt.wid

我在JFace对话框中得到了两个标签。一个是短文本,一个是长文本。我想较长的文字包装时,它的长度超过不应该包装的短文本的长度

导入org.eclipse.jface.dialogs.Dialog; 导入org.eclipse.swt.swt; 导入org.eclipse.swt.layout.GridData; 导入org.eclipse.swt.widgets.Composite; 导入org.eclipse.swt.widgets.Control; 导入org.eclipse.swt.widgets.Display; 导入org.eclipse.swt.widgets.Label; 导入org.eclipse.swt.widgets.Shell; 公共类测试对话框{ 公共静态无效字符串[]args{ 显示=新显示; 外壳=新外壳显示; MyTestDialog=新建MyTestDialogshell; dialog.open; 处理; while!shell.isDisposed{ if!display.readAndDispatch 显示。睡眠; } 显示、处理; } } 类MyTestDialog扩展了对话框{ 公共MyTestDialogShell父对象{ 超级家长; } @凌驾 受保护的控件CreateDialogArea复合父级{ 复合容器=复合super.createDialogAreaparent; container.setLayoutDatanew GridDataSWT.NONE、SWT.TOP、true、false; 标签lbl1=新标签容器,SWT.NONE; GridData lbl1griddata=新GridDataSWT.CENTER、SWT.CENTER、false、false; lbl1.setLayoutDatalbl1griddata; lbl1.settext这是一个短文本,比另一个短。; 标签lbl2=新标签容器,SWT.WRAP; lbl2.setlayoutdatanewgriddataswt.FILL,SWT.CENTER,true,false; lbl2.setTextLorem ipsum door sit amet、consetetur sadipscing eliter、sed diam nonumy eirmod temporal invident ut labour and dolore magna aliquyam erat、sed diam voluptua.在vero eos et accusam et just duo dolores et ea reum。; 返回容器; } }
我认为您必须计算出第一个标签文本的长度,并将其用作第二个标签布局的宽度提示,以便执行此操作:

Label lbl1 = new Label(container, SWT.NONE);
GridData lbl1griddata = new GridData(SWT.CENTER, SWT.CENTER, false, false);
lbl1.setLayoutData(lbl1griddata);
lbl1.setText("This is a short text. Shorter than the other.");

GC gc = new GC(lbl1.getDisplay());
int width = gc.textExtent(lbl1.getText()).x;
gc.dispose();

Label lbl2 = new Label(container, SWT.WRAP);
GridData data = new GridData(SWT.FILL, SWT.CENTER, true, false);
data.widthHint = width;
lbl2.setLayoutData(data);
lbl2.setText("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.");