作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 Ubuntu Linux/Gnome 时出现了一个问题,但在 Windows 上似乎没有出现(如其中一个答案所示),我无法使用 SWT.RIGHT | SWT.WRAP
在一起,当创建一个新标签时,为了使文本右对齐和可换行。
背景:
我在向导中使用一个简单的 2 列网格布局来创建动态行数,每行有一个标签和一个文本字段。我希望标签具有固定大小并且其中的文本右对齐,如下所示:
label 1: [Text field 1]
Another label: [Text field 2]
Another label
with wrapped [Text field 3]
text:
网格布局是这样创建的:
GridLayout gl = new GridLayout();
gl.numColumns = 2;
composite.setLayout(gl);
这就是我尝试创建行的方式(每行有一个标签和一个文本字段):
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 = 160;
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 = 248;
textField.setLayoutData(textGridData);
}
问题出在这部分:SWT.RIGHT |上面的 SWT.WRAP
,因为同时使用它们是行不通的。那么我怎样才能解决这个问题,既使标签中的文本右对齐,又使文本换行?
最佳答案
我尝试在我的 Vista 机器上使用 eclipse 3.6 重现该问题。但这对我有用。
这是输出:
我用过的代码如下:
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
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 = 2;
shell.setLayout(layout);
shell.setText("Alignment Test");
String[] labelTexts = new String[]{"label 1:","Another label:","Another label with wrapped text:"};
for (String labelText : labelTexts)
{
Label fieldLabel = new Label(shell, SWT.RIGHT |SWT.WRAP | SWT.BORDER );
fieldLabel.setText(labelText);
GridData labelGridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
labelGridData.widthHint = 100;
fieldLabel.setLayoutData(labelGridData);
Text textField = new Text(shell, SWT.BORDER);
GridData textGridData = new GridData(GridData.FILL_HORIZONTAL);
textGridData.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
textGridData.widthHint = 248;
textField.setLayoutData(textGridData);
}
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}
我唯一改变的是labelGridData.widthHint
来自 160
至 100
.最长的标签是 < 160
因此没有被包裹。
关于java - 在 Linux/Gnome 中同时右对齐和换行 SWT 标签中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5014765/
我是一名优秀的程序员,十分优秀!