2019独角兽企业重金招聘Python工程师标准>>>
cyper的例子:
注意dialog.open()返回Dialog.OK而不是SWT.OK
窗体代码:
public class ChooseIntegerDialog extends Dialog {private String[] possibleIntegerFields;/*** checkedIntegerFields is fields separated with comma*/private String checkedIntegerFields;private List
使用代码: String[] possibleIntegerFields = REUtil.getREGroupSet(content, "([_a-zA-Z0-9]+)\s*(?:=|<>|!=)\s*'[0-9]+'");String checkedIntegerFields = null;ChooseIntegerDialog integerDialog = new ChooseIntegerDialog(sw.getShell(), possibleIntegerFields);if (integerDialog.open() == Dialog.OK) {checkedIntegerFields = integerDialog.getCheckedIntegerFields();}else{return;}
以下是转载部分
近期的工作需要一个模态化的对话框,发现JFace中的Dialog正好符合我的要求,并且可以定制的方面也不少,使用起来很方便。下面是一些常用方法,因此在这里记录下来。
①设置标题栏名称
protected void configureShell(Shell newShell) { // TODO Auto-generated method stub super.configureShell(newShell); newShell.setText("Hello!");
}
②设置窗体大小
protected Point getInitialSize() { // TODO Auto-generated method stub return new Point(300,400);
}
③取消自带的OK、Cancel按钮
@Override protected void createButtonsForButtonBar(Composite parent) { // TODO Auto-generated method stub }
④定义对话框上我们需要的控件
@Override protected Control createDialogArea(Composite parent) { // TODO Auto-generated method stub Composite container = new Composite(parent, SWT.NONE); container.setBounds(0, 0, 300, 400); Button btn = new Button(container, SWT.NONE); btn.setBounds(10, 10, 55, 20); btn.setText("Click!"); // 实现自带“取消”按钮的功能 btn.addSelectionListener(new SelectionAdapter(){ @Override public void widgetSelected(SelectionEvent e) { // TODO Auto-generated method stub setReturnCode(CANCEL); close(); } }); return container; }
⑤居中对齐
这个最简单了,在创建Dialog的时候指定父窗口shell就可以了!
⑥更改Shell样式
@Override protected void setShellStyle(int newShellStyle) { // TODO Auto-generated method stub // 取消关闭“X”按钮 super.setShellStyle(newShellStyle ^ SWT.CLOSE); }
⑦自定义关闭事件