我似乎对pack-figure和使用computeFigure有问题。
下面是一些重现我的行为的代码。
public void main() {
bool redraw = false;
str boxWidthProp = "";
Figure topBar = hcat([text("Width"), combo(["1", "2"], void(str s){ boxWidthProp = s; }, hshrink(0.1))
, button("Redraw", void() {redraw = true; }, resizable(false))], vshrink(0.05), hgap(5));
Figure getTreemap() {
return computeFigure(bool () { bool temp = redraw; redraw = false; return temp; }, Figure() {
int sz = 20;
if (boxWidthProp == "2")
sz = 100;
b = box(size(sz, sz), fillColor("Red"), resizable(false));
t = text(str() {return "w: <sz>; prop: <boxWidthProp>"; });
Figures boxes = [];
boxes += b;
boxes += t;
//return pack(boxes, std(gap(5)));
return vcat([t,b]);
});
}
vc = vcat([topBar, getTreemap()]);
render(vc);
}
运行此代码时,您会看到一个带有组合,按钮,标签和框的新屏幕。
现在取消注释&#34;返回包...&#34;并评论&#34;返回vcat&#34;。 再次运行代码。
您将看到相同的屏幕。
我的猜测是包装图有问题。但我是流氓(和日食)的新手,所以我可能会错过一些东西。