我必须使用GXT AlertMessageBox
显示堆栈跟踪,并且我希望有一个固定大小的框,其内容可滚动(至少垂直)。
不幸的是,我无法做到这一点。
到目前为止我所做的是以下内容:
使用@XTemplate
这样的
@XTemplate(value = "<pre>{stacktrace}</pre>")
SafeHtml render(String stacktrace);
渲染堆栈跟踪。此处需要<pre>
来保留堆栈跟踪格式。
使用GXT AlertMessageBox
呈现如下模板:
MessageBox box = new AlertMessageBox("", "");
box.setMessage(StacktraceTemplate.RENDERER.render(stackTrace).asString());
box.setHeadingText("Stacktrace");
box.setResize(false);
box.setHeight(700);
box.show();
在我看来,我可以:
box.setResize(true)
,这是默认值)box.setHeight()
我已经尝试了以下内容:
overflow: scroll;
(即@XTemplate(value = "<pre style='overflow: scroll;'>{stacktrace}</pre>")
@XTemplate(value = "<div style='overflow: scroll;'><pre>{stacktrace}</pre></div>")
)。结果是我看到一个禁用的滚动条,和
内容仍然被截断。将SafeHtml
的{{1}}包裹在XTemplate
中,然后将其添加到HTML
。然后我添加了scrollpanel
方框的消息是这样的:
ScrollPanel
但结果相同(即禁用滚动条)。
ScrollPanel container = new ScrollPanel(content);
container.setAlwaysShowScrollBars(true);
HTMLPanel panel = new HTMLPanel("");
panel.add(container.asWidget());
MessageBox box = new MessageBox(SafeHtmlUtils.fromSafeConstant("<div>StackTrace</div>"),SafeHtmlUtils.fromTrustedString(panel.getElement().getInnerHTML()));
// same setResize, setHeight, show as before
包裹FlowLayoutContainer
。结果相同。如何使用可滚动内容来固定大小getScrollSupport().setScrollMode(ScrollSupport.ScrollMode.ALWAYS);
?
答案 0 :(得分:0)
事实证明,我非常接近解决方案:我的想法是让MessageBox
根据内容调整其大小,然后像这样修复ScrollPanel
的大小:< / p>
HTML content = new HTML(StacktraceTemplate.RENDERER.render(stackTrace));
ScrollPanel container = new ScrollPanel(content);
container.setHeight("700px");
HTMLPanel panel = new HTMLPanel("");
panel.add(container.asWidget());
MessageBox box = new AlertMessageBox(
SafeHtmlUtils.fromSafeConstant("<div>StackTrace</div>").asString(),
SafeHtmlUtils.fromTrustedString(panel.getElement().getInnerHTML()).asString());
box.show();