gpt4 book ai didi

java - 在 SWT 标签中以粗体显示部分文本,以斜体显示部分文本

转载 作者:行者123 更新时间:2023-12-01 10:42:31 25 4
gpt4 key购买 nike

我必须向用户显示一些警告消息,例如

“如果您恢复数据,更新的更改将丢失,因此重新检查一次”

在德语中,我也必须使用相同的粗体和斜体字符串。

在两种语言中,对话框的高度和宽度应该相同

public class BoldTextMessageDialog extends ZedisTrayDialog {

private Composite container;
private String firstSring;
private String secondString;
private String boldString;
private Button restoreButton;
private Button cancelButton;

public BoldTextMessageDialog(Shell shell, String firstSring, String secondString, String boldString) {
super(shell);
this.firstSring = firstSring;
this.secondString = secondString;
this.boldString = boldString;
}

@Override
protected Control createDialogArea(Composite parent) {

container = new Composite(parent, SWT.NONE);
container.setLayout(new FormLayout());
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);

gd.heightHint = 300;
gd.widthHint = 500;
container.setLayoutData(gd);

Label warningLabel = new Label(container, SWT.NONE);
warningLabel.setImage(parent.getDisplay().getSystemImage(SWT.ICON_WARNING));

FormData fd = new FormData();
fd.left = new FormAttachment(0, 5);
fd.top = new FormAttachment(0, 5);
warningLabel.setLayoutData(fd);

Label firstLabel = new Label(container, SWT.WRAP);
firstLabel.setText(firstSring);

fd = new FormData();
fd.left = new FormAttachment(warningLabel, 10);
fd.right = new FormAttachment(100, 0);
fd.top = new FormAttachment(0, 10);
firstLabel.setLayoutData(fd);

Label secLabel = new Label(container, SWT.WRAP);
secLabel.setText(boldString);
secLabel.setFont(FontCache.getBoldFont());

fd = new FormData();
fd.top = new FormAttachment(0, 25);
fd.left = new FormAttachment(0, 48);
secLabel.setLayoutData(fd);

Label thirdLabel = new Label(container, SWT.WRAP);
thirdLabel.setText(secondString);

fd = new FormData();
fd.top = new FormAttachment(0, 25);
fd.left = new FormAttachment(secLabel, 3);
fd.right = new FormAttachment(100, -5);
thirdLabel.setLayoutData(fd);

return parent;
}

}

这是我尝试过的方法,但问题是对于德语和英语,斜体和粗体文本出现在不同的位置,因此对于相同的大小,它们不合适。如果我使用不同的尺寸也没关系。

最佳答案

要在 SWT 中显示样式文本,您可以使用 Browser 小部件或 StyledText 小部件。在这两种情况下,您可能需要将默认外观和行为更改为类似标签(即背景颜色,只读)

浏览器小工具

Browser browser = new Browser( parent, SWT.NONE );
browser.setText( "If you restore data the changes will be <b>lost</b>, So <i>recheck</i> once" );

样式化文本

StyledText text = new StyledText( parent, SWT.NONE );
text.setText( "If you restore data the changes will be lost, So recheck once" );

通过 StyleRange,您可以定义文本部分的格式。样式范围有一个 start 和一个 length 来指定应用它的文本部分,还有一个 TextStyle 来控制样式属性被应用。要让第一个字符显示为粗体,代码如下所示:

StyleRange styleRange = new StyleRange( 0, 1, null, null, SWT.BOLD );
text.setStyleRanges( new StyleRange[]{ styleRange } );

表单文本

如果您已经依赖于 org.eclipse.ui.forms,还有一个选择是使用 FormText 小部件。它支持文本中的 HTML 类标记,类似于浏览器小部件。这可能是最像标签的小部件,但拖入了额外的依赖项。

关于java - 在 SWT 标签中以粗体显示部分文本,以斜体显示部分文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28874579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com