首先申明下,本文为笔者学习《Eclipse插件开发学习笔记》的笔记,并加入笔者自己的理解和归纳总结。
1. ToolBar和ToolItem
ToolBar
是工具栏,ToolItem
是工具栏中的选项卡。
ToolBar
中,SWT.HORIZONTAL
显示水平工具栏,SWT.VERTICAL
显示垂直工具栏。SWT.RIGHT
设置选项卡中,文字和图片左右排列。
ToolItem
中,SWT.PUSH
显示普通按钮,SWT.CHECK
为复选状态,SWT.RADIO
为单选状态,SWT.SEPARATOR
表示分割。
setText()
设置文字,setImage()
设置图片,setToolTipText()
设置显示提示信息。setControl()
方法可以把其他控件放置在工具栏中。也可以添加SelectionListener
监听器。
Image image = new Image(display, ToolBarDemo.class.getResourceAsStream("demo.gif"));
// 水平工具栏
ToolBar horizontalToolBar = new ToolBar(shell, SWT.HORIZONTAL | SWT.WRAP);
horizontalToolBar.setBounds(0, 0, 200, 90);
ToolItem toolItem1 = new ToolItem(horizontalToolBar, SWT.PUSH);
toolItem1.setText("item 1");
toolItem1.setImage(image);
toolItem1.setToolTipText("item 1 tips");
toolItem1.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
System.out.println("item 1 selected");
}
});
// 多选工具栏
ToolItem toolItem2 = new ToolItem(horizontalToolBar, SWT.CHECK);
toolItem2.setText("item 2");
toolItem2.setImage(image);
toolItem2.setToolTipText("item 2 tips");
// 单选工具栏
ToolItem toolItem3 = new ToolItem(horizontalToolBar, SWT.RADIO);
toolItem3.setText("item 3");
toolItem3.setImage(image);
toolItem3.setToolTipText("item 3 tips");
ToolItem toolItem4 = new ToolItem(horizontalToolBar, SWT.RADIO);
toolItem4.setText("item 4");
toolItem4.setImage(image);
toolItem4.setToolTipText("item 4 tips");
// 添加文本控件
ToolItem toolItem5 = new ToolItem(horizontalToolBar, SWT.SEPARATOR);
Text text = new Text(horizontalToolBar, SWT.BORDER);
text.setSize(120, 20);
toolItem5.setControl(text);
toolItem5.setWidth(120);
// 垂直工具栏
ToolBar verticalToolBar = new ToolBar(shell, SWT.VERTICAL | SWT.RIGHT);
verticalToolBar.setBounds(0, 100, 80, 80);
ToolItem toolItem6 = new ToolItem(verticalToolBar, SWT.PUSH);
toolItem6.setText("item 6");
toolItem6.setImage(image);
toolItem6.setToolTipText("item 6 tips");
new ToolItem(verticalToolBar, SWT.SEPARATOR);
ToolItem toolItem7 = new ToolItem(verticalToolBar, SWT.PUSH);
toolItem7.setText("item 7");
toolItem7.setImage(image);
toolItem7.setToolTipText("item 7 tips");
... ...
image.dispose();
显示如下
2. Menu和MenuItem
Menu
是系统菜单,为窗口添加菜单栏时,使用样式SWT.BAR
,并调用shell.setMenuBar()
方法设置。
MenuItem
是菜单的选项,样式为SWT.PUSH
时为一般菜单,SWT.CHECK
为多选,SWT.RADIO
为单选,SWT.SEPARATOR
为分割线。
添加多级菜单时,设置样式为SWT.CASCADE
,并调用setMenu()
方法添加Menu
,并使用这个Menu
来创建新的菜单项。
Image image = new Image(display, MenuDemo.class.getResourceAsStream("demo.gif"));
// 菜单栏
Menu bar = new Menu(shell, SWT.BAR);
shell.setMenuBar(bar);
// File菜单项
MenuItem fileMenuItem = new MenuItem(bar, SWT.CASCADE);
fileMenuItem.setText("file");
Menu fileMenu = new Menu(fileMenuItem);
fileMenuItem.setMenu(fileMenu);
// File菜单项 - New菜单项
MenuItem newMenuItem = new MenuItem(fileMenu, SWT.CASCADE);
newMenuItem.setText("New");
newMenuItem.setImage(image);
Menu newMenu = new Menu(newMenuItem);
newMenuItem.setMenu(newMenu);
// File菜单项 - New菜单项 - Project菜单项
MenuItem projectMenuItem = new MenuItem(newMenu, SWT.PUSH);
projectMenuItem.setText("Project");
// File菜单项 - New菜单项 - Class菜单项
MenuItem classMenuItem = new MenuItem(newMenu, SWT.PUSH);
classMenuItem.setText("Class");
// File菜单项 - Open菜单项
MenuItem openMenuItem = new MenuItem(fileMenu, SWT.PUSH);
openMenuItem.setText("Open");
openMenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
System.out.println("Open Item");
}
});
new MenuItem(fileMenu, SWT.SEPARATOR);
// File菜单项 - Close菜单项
MenuItem closeMenuItem = new MenuItem(fileMenu, SWT.PUSH);
closeMenuItem.setText("Close");
closeMenuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
shell.dispose();
}
});
// Edit菜单项
MenuItem editMenuItem = new MenuItem(bar, SWT.CASCADE);
editMenuItem.setText("Edit");
Menu editMenu = new Menu(editMenuItem);
editMenuItem.setMenu(editMenu);
// 多选菜单项
MenuItem checkItem1MenuItem = new MenuItem(editMenu, SWT.CHECK);
checkItem1MenuItem.setText("Check Item1");
checkItem1MenuItem.setSelection(true);
MenuItem checkItem2MenuItem = new MenuItem(editMenu, SWT.CHECK);
checkItem2MenuItem.setText("Check Item2");
new MenuItem(editMenu, SWT.SEPARATOR);
// 单选菜单项
MenuItem radioItem1MenuItem = new MenuItem(editMenu, SWT.RADIO);
radioItem1MenuItem.setText("Radio Item1");
radioItem1MenuItem.setSelection(true);
MenuItem radioItem2MenuItem = new MenuItem(editMenu, SWT.RADIO);
radioItem2MenuItem.setText("Radio Item2");
MenuItem radioItem3MenuItem = new MenuItem(editMenu, SWT.RADIO);
radioItem3MenuItem.setText("Radio Item3");
... ...
image.dispose();
显示如下
3. CoolBar和CoolItem
CoolBar
工具栏可以拖动改变位置,CoolItem
作为一个可以拖动的容器,可以向CoolItem
中添加控件。
Image image = new Image(display, CoolBarDemo.class.getResourceAsStream("demo.gif"));
CoolBar coolBar = new CoolBar(shell, SWT.NONE);
coolBar.setBounds(0, 0, 290, 30);
CoolItem coolItem1 = new CoolItem(coolBar, SWT.PUSH);
Button button1 = new Button(coolBar, SWT.NONE);
button1.setImage(image);
button1.setSize(25, 25);
coolItem1.setControl(button1);
coolItem1.setSize(coolItem1.computeSize(25, 25));
CoolItem coolItem2 = new CoolItem(coolBar, SWT.PUSH);
Button button2 = new Button(coolBar, SWT.NONE);
button2.setImage(image);
button2.setSize(25, 25);
coolItem2.setControl(button2);
coolItem2.setSize(coolItem2.computeSize(25, 25));
CoolItem coolItem3 = new CoolItem(coolBar, SWT.PUSH);
Combo combo = new Combo(coolBar, SWT.DROP_DOWN);
combo.add("Tom");
combo.add("Mike");
combo.setSize(60, 25);
coolItem3.setControl(combo);
coolItem3.setSize(coolItem2.computeSize(60, 25));
CoolItem coolItem4 = new CoolItem(coolBar, SWT.PUSH);
ToolBar toolBar = new ToolBar(coolBar, SWT.HORIZONTAL);
ToolItem toolItem1 = new ToolItem(toolBar, SWT.PUSH);
toolItem1.setText("item 1");
toolItem1.setToolTipText("item 1 tips");
ToolItem toolItem2 = new ToolItem(toolBar, SWT.CHECK);
toolItem2.setText("item 2");
toolItem2.setToolTipText("item 2 tips");
toolBar.setBounds(0, 0, 100, 30);
coolItem4.setControl(toolBar);
toolBar.pack();
coolItem4.setSize(coolItem2.computeSize(toolBar.getSize().x, toolBar.getSize().y));
new CoolItem(coolBar, SWT.PUSH);
... ...
image.dispose();
显示如下
4. TabFolder和TabItem
TabFolder
可以将多个页面层叠排列,并为每个页面显示提供一个选项卡,单击这些选项卡,可以切换位于最上层的页面。SWT.BOTTOM
样式可以使选项卡显示在下端。
TabFolder
可以添加SelectionListener
监听器来监听选项卡的切换。
Image image = new Image(display, TabFolderDemo.class.getResourceAsStream("demo.gif"));
TabFolder tabFolder = new TabFolder(shell, SWT.NONE);
tabFolder.setBounds(10, 10, 250, 190);
tabFolder.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
System.out.println(tabFolder.getSelectionIndex());
}
});
TabItem tabItem1 = new TabItem(tabFolder, SWT.NONE);
tabItem1.setText("tab1");
tabItem1.setImage(image);
Button button = new Button(tabFolder, SWT.PUSH);
button.setText("button");
tabItem1.setControl(button);
TabItem tabItem2 = new TabItem(tabFolder, SWT.NONE);
tabItem2.setText("tab2");
Label label = new Label(tabFolder, SWT.PUSH);
label.setText("label");
tabItem2.setControl(label);
TabItem tabItem3 = new TabItem(tabFolder, SWT.NONE);
tabItem3.setText("tab3");
Text text = new Text(tabFolder, SWT.NONE);
text.setText("text");
tabItem3.setControl(text);
... ...
image.dispose();
显示如下