JAVA.SWT/JFace: SWT基本组件之按钮(Button)

《Eclipse SWT/JFACE 核心应用》 清华大学出版社 5.2 按钮(Button)

    按钮有普通按钮(SWT.PUSH)、单选按钮(SWT.RADIO)、多选按钮(SWT.CHECK)、箭头按钮(SWT.ARROW)和切换按钮(SWT.TOGGLE)几种类型。
    同时,也可以设置按钮的样式。设置按钮文字对齐的样式有SWT.LEFT、SWT.RIGHT和SWT.CENTER。设置按钮的外观风格的样式有SWT.FLAT和SWT.BORDER。

1. 普通按钮(SWT.PUSH)

package www.swt.com;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class testButton {

/**
* @param args
*/
public static void main(String[] args) {

   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setSize(600, 100);
   shell.setLayout(new RowLayout(SWT.HORIZONTAL));
   shell.setText("Button");
  
   Button bt1 = new Button(shell, SWT.PUSH | SWT.LEFT);
   bt1.setText("SWT.LEFT");
   bt1.setToolTipText("SWT.LEFT"); //悬浮提示
  
   Button bt2 = new Button(shell, SWT.PUSH | SWT.RIGHT);
   bt2.setText("SWT.RIGHT");
   bt2.setToolTipText("SWT.RIGHT");
  
   Button bt3 = new Button(shell, SWT.PUSH | SWT.CENTER);
   bt3.setText("SWT.CENTER");
   bt3.setToolTipText("SWT.CENTER");
  
   Button bt4 = new Button(shell, SWT.PUSH | SWT.FLAT);
   bt4.setText("SWT.FLAT");
   bt4.setToolTipText("SWT.FLAT");
  
   Button bt5 = new Button(shell, SWT.PUSH | SWT.BORDER);
   bt5.setText("SWT.BORDER");
   bt5.setToolTipText("SWT.BORDER");
  
//   bt1.pack();
//   bt2.pack();
//   bt3.pack();
//   bt4.pack();
//   bt5.pack();

   shell.open();
   shell.pack();
  
   while (!shell.isDisposed()) {
    if (!display.readAndDispatch()) {
     display.sleep();
    }
   }
   display.dispose();  
}

}
显示效果:

2. 切换按钮(SWT.TOGGLE)

切换按钮单击后保持按下状态,再次单击时恢复初始状态。
   Button bt1 = new Button(shell, SWT.TOGGLE | SWT.LEFT);
   bt1.setText("SWT.LEFT");
   bt1.setToolTipText("SWT.LEFT"); //悬浮提示
  
   Button bt2 = new Button(shell, SWT.TOGGLE | SWT.FLAT);
   bt2.setText("SWT.FLAT");
   bt2.setToolTipText("SWT.FLAT");
  
   Button bt3 = new Button(shell, SWT.PUSH | SWT.BORDER);
   bt3.setText("SWT.BORDER");
   bt3.setToolTipText("SWT.BORDER");
显示效果:

3. 箭头按钮(SWT.ARROW)

    箭头按钮是带有小箭头的按钮,创建时需要指定箭头的方向SWT.UP、SWT.DOWN、SWT.LEFT和SWT.RIGHT,若不指定方向,默认为SWT.UP。
   Button bt1 = new Button(shell, SWT.ARROW | SWT.UP);
   Button bt2 = new Button(shell, SWT.ARROW | SWT.DOWN);
   Button bt3 = new Button(shell, SWT.ARROW | SWT.LEFT);
   Button bt4 = new Button(shell, SWT.ARROW | SWT.RIGHT);
   Button bt5 = new Button(shell, SWT.ARROW | SWT.FLAT);
   Button bt6 = new Button(shell, SWT.ARROW | SWT.BORDER);
显示效果:

4. 单选按钮(SWT.RADIO)

   Group group1 = new Group(shell, SWT.SHADOW_ETCHED_OUT);
   group1.setLayout(new FillLayout(SWT.VERTICAL));
   group1.setText("这是一组样式");
  
   Button bt1 = new Button(group1, SWT.RADIO | SWT.LEFT);
   bt1.setText("SWT.LEFT");
   Button bt2 = new Button(group1, SWT.RADIO | SWT.RIGHT);
   bt2.setText("SWT.RIGHT");
   Button bt3 = new Button(group1, SWT.RADIO | SWT.CENTER);
   bt3.setText("SWT.CENTER");
  
   //////////////
   Group group2 = new Group(shell, SWT.SHADOW_ETCHED_OUT);
   group2.setLayout(new FillLayout(SWT.VERTICAL));
   group2.setText("这是另一组样式");
  
   Button bt4 = new Button(group2, SWT.RADIO | SWT.FLAT);
   bt4.setText("SWT.FLAT");
   bt4.setSelection(true);
   Button bt5 = new Button(group2, SWT.RADIO | SWT.BORDER);
   bt5.setText("SWT.BORDER");
   Button bt6 = new Button(group2, SWT.RADIO);
   bt6.setText("SWT.RADIO");
对于单选按钮,创建对象时要指定按钮所属的父类。

显示效果:

   group2.setVisible(false); 显示效果:

5. 多选按钮(SWT.CHECK)

    Group group = new Group(shell, SWT.SHADOW_ETCHED_OUT);
    group.setLayout(new FillLayout(SWT.VERTICAL));
    group.setText("不同样式的多选按钮");
  
   Button bt1 = new Button(group, SWT.CHECK | SWT.LEFT);
   bt1.setText("SWT.LEFT");
   Button bt2 = new Button(group, SWT.CHECK | SWT.RIGHT);
   bt2.setText("SWT.RIGHT");
   Button bt3 = new Button(group, SWT.CHECK | SWT.CENTER);
   bt3.setText("SWT.CENTER");
   Button bt4 = new Button(group, SWT.CHECK | SWT.FLAT);
   bt4.setText("SWT.FLAT");
   Button bt5 = new Button(group, SWT.CHECK | SWT.BORDER);
   bt5.setText("SWT.BORDER");
显示效果:


增加事件:
   RowLayout layout = new RowLayout(SWT.VERTICAL);
   layout.marginWidth = 10;
   shell.setLayout(layout);
  
   Group group = new Group(shell, SWT.SHADOW_ETCHED_OUT);
   group.setLayout(new FillLayout(SWT.VERTICAL));
   group.setText("您的爱好是:");
  
   final Button[] button = new Button[5];
   String[] items = {"看书", "游泳", "音乐", "睡觉", "逛街"};
  
   for (int i = 0; i < button.length; i++) {
    button[i] =new Button(group, SWT.CHECK);
    button[i].setText(items[i]);
   }
  
   Button ok = new Button(group, SWT.PUSH);
   ok.setText("确定");

   ok.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
     for (int i = 0; i < button.length; i++) {
      if (button[i].getSelection()) {
       System.out.println("您选择了:"+button[i].getText());
      }
     }
    }
   });

显示效果:

6. 常用的方法

设置和获取按钮文本:setText、getText
设置和获取按钮是否被选中:setSelection、getSelection
设置和获取按钮图标:setImage、getImage
button.setImage(display.getSystemImage(SWT.ICON_ERROR))
button.setImage(new Image(display, "F:\\edit.gif"))
设置和获取按钮文字对齐方式:setAlignment、getAlignment

添加代码:
   ok.setImage(display.getSystemImage(SWT.ICON_INFORMATION));
显示效果:

你可能感兴趣的:(Java)