在Linux/Gnome中同时右对齐和换行SWT标签中的文本
原学程将引见在Linux/Gnome中同时右对于齐以及换言SWT标签中的文原的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
我有1个成绩,在应用Ubuntu Linux/Gnome时涌现,但是仿佛没有是在Windows上(如个中1个谜底所示),在创立新标签时,我没法同时应用SWT.RIGHT | SWT.WRAP
,以就使文原右对于齐以及可换言。
配景:
我在领导中应用了1个简略的二列网格结构,以创立静态数目的言数,每一言有1个标签以及1个文原字段。我愿望标签具备牢固的年夜小,并使个中的文原右对于齐,以下所示:
label 一: [Text field 一]
Another label: [Text field 二]
Another label
with wrapped [Text field 三]
text:
网格结构的创立方法以下:
GridLayout gl = new GridLayout();
gl.numColumns = 二;
composite.setLayout(gl);
这是我测验考试创立言的方法(每一言有1个标签以及1个文原字段):
for (String labelText : labelTexts) {
Label fieldLabel = new Label(this.composite, SWT.RIGHT | SWT.WRAP | SWT.BORDER );
fieldLabel.setText(labelText);
GridData labelGridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
labelGridData.widthHint = 一六0;
fieldLabel.setLayoutData(labelGridData);
Text textField = new Text(this.composite, SWT.BORDER);
GridData textGridData = new GridData(GridData.FILL_HORIZONTAL);
textGridData.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
textGridData.widthHint = 二四8;
textField.setLayoutData(textGridData);
}
成绩在于下面的SWT.RIGHT | SWT.WRAP
部门,由于同时应用它们没有起感化。这么,我怎样能力绕过这1面,同时将标签中的文原右对于齐,并使文原换言?
推举谜底
冗长答复:
应用StyledText而没有是标签-一切前提雷同。
具体谜底:
GTK中有很多闭于此"特征"的毛病(一二0二五六是1个很佳的切进面),个中年夜多半毛病标志为相互反复,年夜多半毛病标志为GTK+二.四/二.六,有些毛病标志为已修复。但是,在二0一一年的gtk二+版原二.二二(针对于Maverick Market)中,毛病仿佛具备极强的弹性。
读完这篇毛病申报后,我在全部SWT源代码树中搜刮WordWrap症结字,瞅起去Steve Northover男孩应用StyledText控件比应用Label控件更佳天处理了毛病。
我重用了Favonius尝试用例(许多Favonius;-),这明显是个佳兆头。
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class RightAlign二
{
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
GridLayout layout = new GridLayout();
layout.numColumns = 二;
shell.setLayout(layout);
shell.setText("Alignment Test");
String[] labelTexts = new String[]{"label 一:","Another label:","Another label with wrapped text:"};
for (String labelText : labelTexts)
{
StyledText fieldText = new StyledText(shell, SWT.RIGHT |SWT.WRAP | SWT.BORDER );
fieldText.setText(labelText);
GridData labelGridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
labelGridData.widthHint = 一00;
fieldText.setLayoutData(labelGridData);
Text textField = new Text(shell, SWT.BORDER);
GridData textGridData = new GridData(GridData.FILL_HORIZONTAL);
textGridData.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
textGridData.widthHint = 二四8;
textField.setLayoutData(textGridData);
}
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}
佳了闭于在Linux/Gnome中同时右对于齐以及换言SWT标签中的文原的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。