Rascal中布局框的问题

时间:2014-12-02 15:46:55

标签: rascal

我在使用图中的数字布局动态生成的数字时遇到了很大的问题。

我期待以下内容:

  • 如果我为一个数字指定size(),那么数字将永远不会变小。这是在尺寸属性合同中。
  • 如果我打包它会重新排列数字而不会使它们小于指定的大小()。它将重新排列并绘制一个围绕它的盒子。 (就新的数字而言)
  • 如果整个图形无法在Eclipse窗口中显示,我会自动(外部)滚动条。

所以如果我执行这个:

public void tester() { 
  list[Figure] list1 = []; 
   for ( i <- [0..3]) { 
      list[Figure] list2 = [];  
      list2 = list2 + box(size(30,200),fillColor("brown"));
      list2 = list2 + box(size(50,610),fillColor("black"));
      list2 = list2 + box(size(100,310),fillColor("gray"));
      list1 = list1 + pack(list2,gap(10),fillColor("red"));
   };
   render(pack(list1,gap(10),fillColor("blue")));
}

我希望这样的东西(或垂直布局我不在乎),如果没有足够的空间,我希望滚动条在图的右下方:

This is what I expect

然而,我得到的是以下内容。但这不是我要求的。我没有要求个别滚动条(如果需要,我想要外部滚动条)。此外,蓝色和红色边框(由于间隙)不可见。

我如何更符合我的预期,为什么它会表现得如此?

What I get

2 个答案:

答案 0 :(得分:0)

我将进行不同的视觉演示(提出一些其他想法)。我用包装打了几个小时,我仍然认为包装内包装没有正确处理。

乔斯

答案 1 :(得分:0)

关键问题似乎是内部pack缺少尺寸规格。如果您按如下方式重写代码,那么事情看起来要好得多:

public void tester() { 
  list[Figure] list1 = []; 
  for ( i <- [0..3]) { 
    list[Figure] list2 = [];  
    list2 = list2 + box(size(30,200),fillColor("brown"));
    list2 = list2 + box(size(50,610),fillColor("black"));
    list2 = list2 + box(size(100,310),fillColor("gray"));
    list1 = list1 + pack(list2,gap(10),size(200,500),fillColor("red"));
 };
 render(pack(list1,gap(10),fillColor("blue")));
}

结果图如下(请注意,所有包都有一个滚动条,右边的滚动条略向下滚动):

enter image description here

作为旁注:当前对尺寸和尺寸调整的处理确实令人困惑,我们正在努力寻找更好的解决方案。