首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

JFace中对话框的经典运用

2012-10-07 
JFace中对话框的经典应用package com.vnvntrip.plugin.dev.views.customimport java.io.IOExceptionimpo

JFace中对话框的经典应用

package com.vnvntrip.plugin.dev.views.custom;import java.io.IOException;import org.eclipse.jface.dialogs.Dialog;import org.eclipse.jface.dialogs.DialogSettings;import org.eclipse.jface.dialogs.IDialogConstants;import org.eclipse.jface.dialogs.IDialogSettings;import org.eclipse.swt.SWT;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.layout.RowData;import org.eclipse.swt.layout.RowLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Text;/** * 重写jface中dialog的使用功能,记下Dialog中的值,当再次打开这个Dialog的时候,还原这些值。 * 这就需要把这些Dialog的值保存起来。Dialog的IDialogSettings类提供了这个功能。 * 记得建立需要的文件,在当前workspace下建立文件夹content,然后在文件夹下建立system.xml文件。当然你也可以利用程序来实现。 *  * 带提示框的Dialog * 使用方法和前边相同,不同的是不是继承自Dialog而是继承自TitleAreaDialog,然后在createDialogArea中加入两行 * setTitle("标题"); * setMessage("提示信息") * setMessage可以加上图片,加入的办法是setMessage("提示信息",IMessageProvider.WARNING);如果想加入其他的图片,调用相应的常量。 *  * @author longgangbai * */public class JfaceDialog extends Dialog {private Text text;public JfaceDialog(Shell parentShell) {super(parentShell);} /**         * 添加自己的控件         */        @Overrideprotected Control createDialogArea(Composite parent) {Composite container = (Composite) super.createDialogArea(parent);container.setLayout(new RowLayout());text = new Text(container, SWT.BORDER);text.setLayoutData(new RowData(100,-1));//设置关闭保存的存储信息if (text.getText() == null || text.getText().equals("")){restoreState();}return container;}        /**         * 重写Dialog中按钮的个数         */        @Overrideprotected void createButtonsForButtonBar(Composite parent) {   super.createButtonsForButtonBar(parent);        }        /**         * 加入右上角的最大化和关闭         */        @Overrideprotected int getShellStyle(){return super.getShellStyle()|SWT.RESIZE|SWT.MAX;}        /**         * 改变dialog的大小         */        @Overrideprotected Point getInitialSize(){return new Point(300,400);//300是宽400是高}       /**        * 加入自己的按钮        */        @Overrideprotected void initializeBounds(){Composite comp = (Composite)getButtonBar();super.createButton(comp, IDialogConstants.OK_ID, "完成", true);}@Overrideprotected void buttonPressed(int button){saveState();}/** * 保存对话框信息的方法 */public void saveState(){if (text.getText() == null || text.getText().equals("")){return ;}IDialogSettings topSettings = getTopSettings();IDialogSettings settings =  topSettings.getSection("TestDialog");if(settings == null)settings = topSettings.addNewSection("TestDialog");settings.put("value", text.getText());try{topSettings.save("content/system.xml");}catch(IOException e){System.out.println(e.getMessage());}}/** * 当打开对话框时显示关闭时的各种信息 */public void restoreState(){IDialogSettings topSettings = getTopSettings();IDialogSettings settings =  topSettings.getSection("TestDialog");if(settings == null) return;if (text.getText() == null || text.getText().equals("")){text.setText(settings.get("value"));}}/** * 加载保存在对话框的信息 * @return */public IDialogSettings getTopSettings(){IDialogSettings topSettings = new DialogSettings("system");try{topSettings.load("content/system.xml");}catch(IOException e){System.out.println(e.getMessage());}return topSettings;}}

?

?

热点排行