gpt4 book ai didi

java - 关于 SWT 应用程序中 html 页面的对话框

转载 作者:行者123 更新时间:2023-11-30 04:38:19 25 4
gpt4 key购买 nike

我在 Swing 中有一个关于对话框,它使用 JEditorPane 来显示 html 文档 (setContentType("text/html ");)。
我想在 Eclipse SWT 应用程序中创建一个 about 对话框,并显示相同的 html 文档,该文档的显示格式(超链接、br 等)与在 Swing 中的显示格式相同。
我怎么能这样做呢?什么是合适的小部件? StyledText
我从 Handler 中的 Browser 开始:

@Execute
public void execute(final Shell currentShell){
//load html file in textReader
Browser browser = new Browser(currentShell, SWT.NONE);
browser.setText(textReader.toString());
}

但是什么也没有显示。解决这个问题的正确方法是什么?

更新:测试@Baz更改:

@Execute
public void execute(final Shell currentShell){
currentShell.setLayout(new FillLayout());
//load html file in textReader
Browser browser = new Browser(currentShell, SWT.NONE);
browser.setText(textReader.toString());
currentShell.pack();
}

它完全破坏了应用程序!加载 html 并覆盖现有元素

最佳答案

您始终可以使用带有嵌入式 Browser 小部件的旧版 JFace Dialog:

public class BrowserDialog extends Dialog {

private String browserString;

protected BrowserDialog(Shell parentShell, String browserString) {
super(parentShell);
this.browserString = browserString;
}

@Override
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);

GridLayout layout = new GridLayout(1, false);
composite.setLayout(layout);

GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
data.widthHint = 400;
data.heightHint = 400;
composite.setLayoutData(data);


Browser browser = new Browser(composite, SWT.NONE);
browser.setText(browserString);
browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

return composite;
}

@Override
protected void createButtonsForButtonBar(Composite parent) {
}

@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText("About");
}

@Override
public void okPressed() {
close();
}

public static void main(String[] args)
{
final Display display = new Display();
Shell shell = new Shell(display);

Color gray = display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);

String hex = String.format("#%02x%02x%02x", gray.getRed(), gray.getGreen(), gray.getBlue());

new BrowserDialog(shell, "<body bgcolor='" + hex + "'><h2>TEXT</h2></body>").open();
}

}

看起来像这样:

enter image description here

如果您想要对话框按钮,只需将 createButtonsForButtonBar(Composite Parent) 方法替换为:

@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, Dialog.OK, "OK", true);
createButton(parent, Dialog.CANCEL, "Cancel", false);
}

然后它看起来像这样:

enter image description here

关于java - 关于 SWT 应用程序中 html 页面的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12899333/

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