像eclipse中有多个编程页面的组件,在swt叫什么组件?有点像TabFolder和CTabFolder,但是这两个都不能叉掉
也就是在左上角没有×这个关闭按钮。我要的是有×这个关闭按钮的组件。有没有现成的类可用还是要自定义?...
也就是在左上角没有×这个关闭按钮。我要的是有×这个关闭按钮的组件。有没有现成的类可用还是要自定义?
展开
展开全部
有呀。看我下面的例子,希望能给楼主一些意见。。
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();
}
}
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.是我要它打开一个新窗口的时候,不能同时使我的窗口成为打开状态,打开的还是原来打开的窗口。
这里先对你的回答表示感谢,希望你能在帮助我解决上面的问题。
追答
什么意思,没明白你说的意思。
发个图,或贴点代码看下。
展开全部
这个兄弟说的很对哦
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();
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();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询