1

にドキュメントを表示するためSwingのaboutダイアログがあります()。 Eclipse SWTアプリケーションでaboutダイアログを作成し、と同じ形式(ハイパーリンク、brなど)で表示されるこの同じドキュメントを表示したいと思います。 どうすればこれを行うことができますか?適切なウィジェットは何ですか?? 私はで始めました: JEditorPanehtmlsetContentType("text/html");
htmlSwing
StyledText
BrowserHandler

@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が読み込まれます

4

1 に答える 1

2

Dialog埋め込みBrowserウィジェットで古き良きJFaceをいつでも使用できます。

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();
    }

}

このように見えます:

ここに画像の説明を入力してください

ダイアログボタンが必要な場合は、createButtonsForButtonBar(Composite parent)メソッドを次のように置き換えてください。

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

次に、次のようになります。

ここに画像の説明を入力してください

于 2012-10-15T16:17:01.873 に答える