我想要一个具有组合的表作为其列标题之一。我已经从这个问题中发现Table是不可能的:
列标题SWT中的控件(组合,广播,文本)
有办法解决吗?我尝试了TableViewer,但也没有找到使用它的方法。有什么办法可以实现?
您可以Composite
使用常规控件在表格上方的区域中创建自己的列标题。
然后,您将需要调整这些控件的大小以匹配表列的大小。一种方法是使用表布局类扩展jface
TableColumnLayout
并覆盖setColumnWidths
每次列大小更改时调用的方法,因此您可以调整标题控件的宽度。
注意:TableColumnLayout需要Composite
仅在上包含,Table
而不是直接在上Table
。
所以这样的布局:
/**
* Table column layout extended to manage a separate table header.
*/
public class TableColumnLayoutWithSeparateHeader extends TableColumnLayout
{
/** Header composite */
private final Composite _headerComposite;
/** Right margin adjust */
private final int _rightMargin;
/**
* Constructor.
*
* @param headerComposite Header composite
* @param rightMargin Right margin value
*/
public TableColumnLayoutWithSeparateHeader(final Composite headerComposite, final int rightMargin)
{
super();
_headerComposite = headerComposite;
_rightMargin = rightMargin;
}
/**
* {@inheritDoc}
* @see org.eclipse.jface.layout.TableColumnLayout#setColumnWidths(org.eclipse.swt.widgets.Scrollable, int[])
*/
@Override
protected void setColumnWidths(final Scrollable tableTree, final int [] widths)
{
super.setColumnWidths(tableTree, widths);
// Update the header composite
final Control [] children = _headerComposite.getChildren();
final int size = Math.min(widths.length, children.length);
for (int index = 0; index < size; ++index) {
final GridData data = (GridData)children[index].getLayoutData();
int width = widths[index];
if (index == (size - 1))
width -= _rightMargin;
data.widthHint = width;
}
_headerComposite.layout();
}
}
SWT-"Standard Widget Toolkit",它是一个Java平台下开放源码的Native GUI组件库,也是Eclipse平台的UI组件之一。从功能上来说,SWT与AWT/SWING是基本等价的。SWT以方便有效的方式提供了便携式的 (即Write Once,Run Away)带有本地操作系统观感的UI组件: 由于widget系统的固有复杂性以及平台之间微妙的差异,即使在理想情况下
问题内容: 我有一个带有组合框的UI。每次组合将要打开列表时,必须刷新可以选择的项目列表。 有什么办法-即添加一个侦听器,该侦听器将通知UI Combo即将打开? 不幸的是,当列表更改时,我无法观察模型来更新列表。 问题答案: 不幸的是,SWT组件没有这种方法。在Swing中,借助于PopupMenuListener接口将很容易。 我可以想到的一种解决方法是实现MouseListener和Keyb
问题内容: 我到处都在搜索,但是找不到解决方案,也找不到答案。 可以在SWT中将自定义控件/小部件放置在表的列标题中吗? 我可以将这些控件放在第一行,但这不是解决方案,因为滚动。 需求的原因是因为我正在导入CSV文件,但是有时其中的列与以前的顺序不同,因此我想给用户一个选项来设置哪一列适合什么(单选按钮或组合)。 谢谢。 问题答案: 不,你不能。通常,仅当SWT小部件受SWT支持的所有操作系统和窗
问题内容: 您将如何在SWT表中显示大量行?巨大的东西超过20K行20列。不要问我为什么我需要显示这么多数据,这不是重点。关键是如何使其尽可能快地工作,以使最终用户不会感到无聊的等待。每行显示一个对象的实例,列是其属性(某些)。我以为使用JFace内容/标签提供程序模式,但担心它比直接用数据命中表还要慢。它是这样的: 在我的计算机上绘制20k条记录大约需要20秒。我在Windows中看到的最大性能
Ribbon 原来出现在 Microsoft Office 2007 的 Word、Excel 和 Powerpoint 組件中,后来也被运用到 Windows 7 的一些附加组件等其它软件中,如画图和写字板。它是一个收藏了命令按钮和图标的面板。它把命令组织成一组"标签",每一组包含了相关的命令。每一个应用程 序都有一个不同的标签组,展示了程序所提供的功能。在每个标签里,各种的相关的选项被组在一起
SWT Designer 是一种功能强大且容易使用的基于Eclipse SWT技术的图形用户界面设计工 具,是一个很好的Eclipse的界面开发插件包。利用SWT Designer 的可视化界面,只需采用 拖拉操作,就可以很快地在窗体上创建各种组件,设计出来的窗体和组件的外观和操作系统 平台下其他软件的外观相似,具有本机系统的风格。SWT Designer 可以自动生成Java代码, 利用它的属性