像eclipse中有多个编程页面的组件,在swt叫什么组件?有点像TabFolder和CTabFolder,但是这两个都不能叉掉

也就是在左上角没有×这个关闭按钮。我要的是有×这个关闭按钮的组件。有没有现成的类可用还是要自定义?... 也就是在左上角没有×这个关闭按钮。我要的是有×这个关闭按钮的组件。有没有现成的类可用还是要自定义? 展开
 我来答
蕊诺辛
推荐于2017-09-07 · TA获得超过152个赞
知道小有建树答主
回答量:348
采纳率:100%
帮助的人:116万
展开全部
有呀。看我下面的例子,希望能给楼主一些意见。。
package com.fengmanfei.ch6;

import org.eclipse.swt.SWT;

public class EclipseTabSample {

public static void main(String[] args) {
Display display = new Display();
// 创建图片对象,该图片对象设置选项卡上的图标
Image image = new Image(
display,
"F:\\13.gif");
final Shell shell = new Shell(display);
shell.setText("仿Eclipse编辑区的选项卡");
shell.setLayout(new GridLayout());
// 创建自定义选项卡对象
final CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
// 设置选项卡的布局,通过布局的设置呈现出最大化和最小化的外观
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
// 设置复杂的选项卡,也就是带有圆角的选项卡标签
folder.setSimple(false);
// 设置未选中标签,图标和关闭按钮的状态
folder.setUnselectedImageVisible(true);
folder.setUnselectedCloseVisible(true);
// 设置前景色和背景色
folder.setSelectionForeground(display.getSystemColor(SWT.COLOR_WHITE));
folder.setSelectionBackground(display.getSystemColor(SWT.COLOR_BLUE));
// 显示最大化和最小化按钮
folder.setMinimizeVisible(true);
folder.setMaximizeVisible(true);
// 创建选项卡标签对象
for (int i = 1; i < 5; i++) {
CTabItem item = new CTabItem(folder, SWT.CLOSE);
item.setText("选项卡 " + i);
item.setImage(image);
// 每个选项卡中放置一个Text文本框
Text text = new Text(folder, SWT.MULTI | SWT.V_SCROLL
| SWT.H_SCROLL);
// 文本框中的文字带有\n表示,显示时换到下一行
text.setText("这是第" + i + "页:\n该选项卡仿照Eclipse设计\n最大化和最小化按钮都可以使用");
item.setControl(text);
}
// 注册选项卡事件
folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
// 当单击最小化按钮时触发的事件
public void minimize(CTabFolderEvent event) {
// 设置选项卡的状态为最小化,选项卡的状态决定显示在右上角的窗口按钮
folder.setMinimized(true);
// 改变选项卡的布局,呈现最小化状态
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
false));
// 刷新布局,否则重新设置的布局将不起作用
shell.layout(true);
}

// 当单击最大化按钮时触发的事件
public void maximize(CTabFolderEvent event) {
folder.setMaximized(true);
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
true));
shell.layout(true);
}

// 当单击还原按钮时触发的事件
public void restore(CTabFolderEvent event) {
folder.setMinimized(false);
folder.setMaximized(false);
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
false));
shell.layout(true);
}
});
shell.setSize(300, 200);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
// 释放图片资源
image.dispose();
display.dispose();
}

}
更多追问追答
追问
我按你的做法我是做出来了,但是有两个问题,1.是我最小化后还原不过来,这个可能是与Layout有关。2.是我要它打开一个新窗口的时候,不能同时使我的窗口成为打开状态,打开的还是原来打开的窗口。

这里先对你的回答表示感谢,希望你能在帮助我解决上面的问题。
追答
什么意思,没明白你说的意思。
发个图,或贴点代码看下。
rongfu66
2012-03-06 · TA获得超过111个赞
知道答主
回答量:186
采纳率:0%
帮助的人:86.9万
展开全部
这个兄弟说的很对哦
package com.fengmanfei.ch6;
import org.eclipse.swt.SWT;
public class EclipseTabSample {
public static void main(String[] args) {
Display display = new Display();
// 创建图片对象,该图片对象设置选项卡上的图标
Image image = new Image(
display,
"F:\\13.gif");
final Shell shell = new Shell(display);
shell.setText("仿Eclipse编辑区的选项卡");
shell.setLayout(new GridLayout());
// 创建自定义选项卡对象
final CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
// 设置选项卡的布局,通过布局的设置呈现出最大化和最小化的外观
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
// 设置复杂的选项卡,也就是带有圆角的选项卡标签
folder.setSimple(false);
// 设置未选中标签,图标和关闭按钮的状态
folder.setUnselectedImageVisible(true);
folder.setUnselectedCloseVisible(true);
// 设置前景色和背景色
folder.setSelectionForeground(display.getSystemColor(SWT.COLOR_WHITE));
folder.setSelectionBackground(display.getSystemColor(SWT.COLOR_BLUE));
// 显示最大化和最小化按钮
folder.setMinimizeVisible(true);
folder.setMaximizeVisible(true);
// 创建选项卡标签对象
for (int i = 1; i < 5; i++) {
CTabItem item = new CTabItem(folder, SWT.CLOSE);
item.setText("选项卡 " + i);
item.setImage(image);
// 每个选项卡中放置一个Text文本框
Text text = new Text(folder, SWT.MULTI | SWT.V_SCROLL
| SWT.H_SCROLL);
// 文本框中的文字带有\n表示,显示时换到下一行
text.setText("这是第" + i + "页:\n该选项卡仿照Eclipse设计\n最大化和最小化按钮都可以使用");
item.setControl(text);
}
// 注册选项卡事件
folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
// 当单击最小化按钮时触发的事件
public void minimize(CTabFolderEvent event) {
// 设置选项卡的状态为最小化,选项卡的状态决定显示在右上角的窗口按钮
folder.setMinimized(true);
// 改变选项卡的布局,呈现最小化状态
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
false));
// 刷新布局,否则重新设置的布局将不起作用
shell.layout(true);
}

// 当单击最大化按钮时触发的事件
public void maximize(CTabFolderEvent event) {
folder.setMaximized(true);
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
true));
shell.layout(true);
}

// 当单击还原按钮时触发的事件
public void restore(CTabFolderEvent event) {
folder.setMinimized(false);
folder.setMaximized(false);
folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
false));
shell.layout(true);
}
});
shell.setSize(300, 200);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式