TabFolder tabFolder = new TabFolder(composite, SWT.CLOSE);
TabItem tab1 = new TabItem(tabFolder, SWT.CLOSE);
tab1.setText("Tab 1");
TabItem tab2 = new TabItem(tabFolder, SWT.CLOSE);
tab2.setText("Tab 2");
我有一个swt.TabFolder,上面有一些swt.TabItems。 我希望有一个关闭按钮与那些TabItems所以我可以关闭我想要的运行时选项卡。 我不想使用CTabFolder或CTabItem
有人可以告诉我,我能为此目的做些什么吗?
public DomainUI(Composite composite, TabFolder newTabFolder, boolean comingFromSelf)
{
boolean itemsDisposed = false;
TabItem[] itemsOnTabFolder = newTabFolder.getItems();
String[] namesOfItemsOnTabFolder = new String[itemsOnTabFolder.length];
if(comingFromSelf) // checking when to dispose other tabs
{
if(itemsOnTabFolder.length != 0)
{
for(int i=0; i<itemsOnTabFolder.length; i++)
{
namesOfItemsOnTabFolder[i] = itemsOnTabFolder[i].getText();
itemsOnTabFolder[i].dispose();
}
itemsDisposed = true;
}
}
final Composite compositeInTab = new Composite(newTabFolder, SWT.NONE);
compositeInTab.setLayout(null);
// CREATIION OF LABELS AND TEXTFIELDS
systemCodeLabel = new Label(compositeInTab, 0);
systemCodeText = new Text(compositeInTab, SWT.BORDER);
domainNameLabel = new Label(compositeInTab, 0);
domainNameText = new Text(compositeInTab, SWT.BORDER);
organizationalUnitLabel = new Label(compositeInTab, 0);
organizationalUnitText = new Text(compositeInTab, SWT.BORDER);
organizationNameLabel = new Label(compositeInTab, 0);
organizationNameText = new Text(compositeInTab, SWT.BORDER);
systemCodeLabel.setText("System Code");
domainNameLabel.setText("Domain Name");
organizationalUnitLabel.setText("Organizational Unit");
organizationNameLabel.setText("Organization Name");
newTabFolder.addMouseListener(new MouseAdapter()
{
public void mouseUp(MouseEvent arg0)
{
TabFolder curFolder = (TabFolder)arg0.widget;
Point eventLocation = new Point(arg0.x, arg0.y);
TabItem item = curFolder.getItem(eventLocation);
if(item == null)
return;
Image image = item.getImage();
// check if click is on image
if( eventLocation.x >= item.getBounds().x + image.getBounds().x && eventLocation.x <= item.getBounds().x + image.getBounds().x + image.getBounds().width
&& eventLocation.y >= item.getBounds().y + image.getBounds().y && eventLocation.y <= item.getBounds().y + image.getBounds().y + image.getBounds().height)
{
System.out.println("Close tab");
item.dispose();
}
else
{
System.out.println("Don't close tab");
}
}
});
}
答案 0 :(得分:6)
TabItem
没有此功能(它将忽略您使用的SWT.CLOSE
样式)。没有其他方式(我知道)而不是使用CTabItem
而是使用样式SWT.CLOSE
。您还必须将TabFolder
替换为CTabFolder
。
或者,如果您无法离开TabItem
,则可以使用x
并添加{{1}为每个标签添加item.setImage(xImage);
图片到文件夹,处理“结束东西”。当然,Listener
项目将在左侧,而不是右侧......
管理以使其正常运行。只需将x
替换为您的近距离图像(进行测试,您可以使用:img/x.gif
):
display.getSystemImage(SWT.ICON_ERROR)
结果如下:
关闭前:
关闭后: