【问题标题】:How to dynamically resize a List on adding an Item?如何在添加项目时动态调整列表的大小?
【发布时间】:2012-10-17 13:11:07
【问题描述】:

我正在使用org.eclipse.swt.widgets.List 动态添加一些项目。

但是每个字符串的大小都大于List 给出的默认宽度。

每次将新的String 添加到List 时,如何重新计算列表的大小?

编辑 1
抱歉这个问题太天真了,SWT 还是个新手。

这就是我创建它的方式:

Group parentGrp = new Group(threeColComposite,SWT.NONE);  
parentGrp.setText("Interfaces Present in Selected jar");  
parentGrp.setLayout(new GridLayout(1,false));  
parentGrp.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));  
myList = new List(parentGrp, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI);  
myList.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

我没有为list 使用单独的布局,因为它是父组的唯一子项。如果没有使用布局是错误的吗?

编辑 2
@Baz:我使用了来自herecreateMiddleContent() 方法中的sn-p

【问题讨论】:

  • 你使用Layout吗?如果是这样,您的List 有哪一个和哪个LayoutData?如果没有,为什么不呢??
  • 您是否尝试过致电myList.pack()parentGrp.layout(true, true)

标签: java swt


【解决方案1】:

我认为最好的方法是创建您赢得的自定义列表(例如检查 http://www.snip2code.com/Snippet/11489/Custom-SWT-List-Box 以创建这样的列表),然后直接在此处管理事件

【讨论】:

  • 定义自定义控件是一个很好的解决方案,它为您提供了您自己开发所需的所有灵活性。
【解决方案2】:

Layout 类及其子类提供了这种调整大小的行为,尽管是间接的。布局缓存列表的原始大小并使用该大小,即使在您向列表中添加更多(和更长)项目后也是如此。修复方法是告诉布局在刷新其缓存后布局特定控件及其子项(所有一种布局方法)。您传入的小部件/控件取决于列表周围有多少小部件需要调整大小,以防列表被调整大小。

当然,您使用的布局必须与最初布置小部件的布局相同。

【讨论】:

  • 我无法理解解决方案。 “修复是告诉布局在刷新其缓存后布局特定控件及其子项(所有一种布局方法)”@Baz:尝试过myList.pack()parentGrp.layout(true, true) 到底是什么意思。但是没有用。 :(
猜你喜欢
  • 2011-02-15
  • 2021-11-11
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多