SWT的TabFolder与TabItem的使用问题 请问各位高手们,TabFolder中的TabItem可以动态添加与删除么?(主要是删除,或者隐藏也行,即将TabFolder中某个TabItem与它关联控制的Composite隐藏)。盼各位不吝赐教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.TabFolder;import org.eclipse.swt.widgets.TabItem;public class tabfloder { protected Shell shell; TabItem[] tabItem = new TabItem[5]; /** * Launch the application * @param args */ public static void main(String[] args) { try { tabfloder window = new tabfloder(); window.open(); } catch (Exception e) { e.printStackTrace(); } } /** * Open the window */ public void open() { final Display display = Display.getDefault(); createContents(); shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } /** * Create contents of the window */ protected void createContents() { shell = new Shell(); shell.setSize(500, 375); shell.setText("SWT Application"); final TabFolder tabFolder = new TabFolder(shell, SWT.NONE); tabFolder.setBounds(10, 10, 472, 321); new example(tabFolder,shell).start(); new example2().start(); // } public class example extends Thread{ TabFolder tabFolder; Shell shell; public example(TabFolder tabFolder,Shell shell){ this.tabFolder = tabFolder; this.shell=shell; } public void run(){ Display.getDefault().asyncExec(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub //new TabItem(tabFolder, SWT.NONE); for(int i=0;i<5;i++){ tabItem[i] = new TabItem(tabFolder, SWT.NONE); final Button button = new Button(tabFolder, SWT.NONE); for(int j=0;j<50;j++) button.setText("button"); tabItem[i].setControl(button); shell.layout(); } } }); } } public class example2 extends Thread{ public void run(){ try { sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Display.getDefault().asyncExec(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<5;i++) tabItem[i].dispose(); } }); } }} 可以实现/* * Created on 2008/04/29 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */package swt;import org.eclipse.swt.SWT;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Group;import org.eclipse.swt.widgets.TabFolder;import org.eclipse.swt.widgets.TabItem;import org.eclipse.swt.custom.ScrolledComposite;import org.eclipse.swt.events.ControlAdapter;import org.eclipse.swt.events.ControlEvent;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.events.SelectionListener;import org.eclipse.swt.graphics.Point;/** * @author qingkangxu * * TODO To change the template for this generated type comment go to Window - * Preferences - Java - Code Style - Code Templates */public class TabFolderClose { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display, SWT.SHELL_TRIM); shell.setText("TabFolder"); shell.setLayout(new FillLayout()); TabFolder folder = new TabFolder(shell, SWT.NONE); final TabItem item1 = new TabItem(folder, SWT.NONE); item1.setText("label"); // create the sc final ScrolledComposite sc = new ScrolledComposite(folder, SWT.V_SCROLL); sc.setExpandHorizontal(true); sc.setExpandVertical(true); sc.getVerticalBar().setIncrement(5); // create the composite on the sc final Composite endpointComp = new Composite(sc, SWT.NONE); GridData suGridData = new GridData(GridData.FILL_BOTH); endpointComp.setLayoutData(suGridData); endpointComp.setLayout(new GridLayout(1, true)); // add button to the endpointComp addCompToEndpointComp(endpointComp); sc.addControlListener(new ControlAdapter() { public void controlResized(ControlEvent e) { Point p = endpointComp.computeSize(SWT.DEFAULT, SWT.DEFAULT); sc.setMinSize(p.x, p.y + 10); endpointComp.layout(); } }); sc.setContent(endpointComp); item1.setControl(sc); TabItem item2 = new TabItem(folder, SWT.NONE); item2.setText("radio"); Group group2 = new Group(folder, SWT.NONE); group2.setText("Radio Group"); group2.setLayout(new GridLayout()); Button btn2 = new Button(group2, SWT.PUSH); btn2.setText("Close \"label\" Item"); item2.setControl(group2); btn2.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent arg0) { } public void widgetSelected(SelectionEvent arg0) { item1.dispose(); } }); folder.setSelection(1); folder.setSelection(new TabItem[] { item2 }); shell.setVisible(true); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } private static void addCompToEndpointComp(Composite endpointComp) { for (int i = 0; i < 20; i++) { Button button = new Button(endpointComp, SWT.PUSH); button.setText("ForTestBtn" + i); button.setLayoutData(new GridData()); } }} 补充一下,其实SWT中的很多Control,调用dispose()方法便可消除! 为什么csdn注销以后在登陆要访问这个地址啊?这样有什么好处吗? 怪事情啊.高手进来 JCreator中的一个参数问题 如何把DUBLE保留二位小数呀。 给初学者一个登录的例子,别人的帮助+我的改进=有所完善, 怎样用java实现换皮肤的功能?请举个例子啊! 怎样学习《JAVA核心技术》第1卷第七章,似乎记忆多于理解 java swing开发问题 我刚用JB7编写了一个APPLET1.CLASS怎么不能在客户端使用 关于泛类限定的简单问题 提取违反顺序 是什么意思啊? jcifs.smb匿名访问局域网共享目录时URL的问题
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
public class tabfloder { protected Shell shell; TabItem[] tabItem = new TabItem[5];
/**
* Launch the application
* @param args
*/
public static void main(String[] args) {
try {
tabfloder window = new tabfloder();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Open the window
*/
public void open() {
final Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
} /**
* Create contents of the window
*/
protected void createContents() {
shell = new Shell();
shell.setSize(500, 375);
shell.setText("SWT Application"); final TabFolder tabFolder = new TabFolder(shell, SWT.NONE);
tabFolder.setBounds(10, 10, 472, 321);
new example(tabFolder,shell).start();
new example2().start();
//
}
public class example extends Thread{
TabFolder tabFolder;
Shell shell;
public example(TabFolder tabFolder,Shell shell){
this.tabFolder = tabFolder;
this.shell=shell;
}
public void run(){
Display.getDefault().asyncExec(new Runnable(){ @Override
public void run() {
// TODO Auto-generated method stub
//new TabItem(tabFolder, SWT.NONE);
for(int i=0;i<5;i++){
tabItem[i] = new TabItem(tabFolder, SWT.NONE);
final Button button = new Button(tabFolder, SWT.NONE);
for(int j=0;j<50;j++)
button.setText("button");
tabItem[i].setControl(button);
shell.layout();
}
}
});
}
}
public class example2 extends Thread{
public void run(){
try {
sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Display.getDefault().asyncExec(new Runnable(){ @Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<5;i++)
tabItem[i].dispose();
}
});
}
}}
/*
* Created on 2008/04/29
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package swt;import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;/**
* @author qingkangxu
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
public class TabFolderClose { public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display, SWT.SHELL_TRIM);
shell.setText("TabFolder");
shell.setLayout(new FillLayout()); TabFolder folder = new TabFolder(shell, SWT.NONE);
final TabItem item1 = new TabItem(folder, SWT.NONE);
item1.setText("label"); // create the sc
final ScrolledComposite sc = new ScrolledComposite(folder, SWT.V_SCROLL);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
sc.getVerticalBar().setIncrement(5); // create the composite on the sc
final Composite endpointComp = new Composite(sc, SWT.NONE);
GridData suGridData = new GridData(GridData.FILL_BOTH);
endpointComp.setLayoutData(suGridData);
endpointComp.setLayout(new GridLayout(1, true));
// add button to the endpointComp
addCompToEndpointComp(endpointComp); sc.addControlListener(new ControlAdapter() {
public void controlResized(ControlEvent e) { Point p = endpointComp.computeSize(SWT.DEFAULT, SWT.DEFAULT);
sc.setMinSize(p.x, p.y + 10);
endpointComp.layout();
}
});
sc.setContent(endpointComp);
item1.setControl(sc); TabItem item2 = new TabItem(folder, SWT.NONE);
item2.setText("radio");
Group group2 = new Group(folder, SWT.NONE);
group2.setText("Radio Group");
group2.setLayout(new GridLayout());
Button btn2 = new Button(group2, SWT.PUSH);
btn2.setText("Close \"label\" Item");
item2.setControl(group2);
btn2.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent arg0) {
} public void widgetSelected(SelectionEvent arg0) {
item1.dispose(); }
}); folder.setSelection(1);
folder.setSelection(new TabItem[] { item2 });
shell.setVisible(true); while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
} private static void addCompToEndpointComp(Composite endpointComp) {
for (int i = 0; i < 20; i++) {
Button button = new Button(endpointComp, SWT.PUSH);
button.setText("ForTestBtn" + i);
button.setLayoutData(new GridData());
}
}}