0

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

我期待以下内容:

  • 如果我为一个图形指定 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")));
}

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

这是我所期望的

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

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

我得到了什么

4

2 回答 2

0

我将进行不同的视觉呈现(提出了一些其他想法)。我用 pack-in-pack 玩了几个小时,我仍然认为 packs-inside-packs 没有正确处理。

乔斯

于 2014-12-02T20:05:23.820 回答
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")));
}

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

在此处输入图像描述

附带说明:当前对大小和调整大小的处理确实令人困惑,我们正在研究更好的解决方案。

于 2014-12-02T20:36:16.630 回答