• 给自定义Dialog加入保留对话框值的功能


    给自定义Dialog加入保留对话框值的功能

    有的时候我们需要这样的功能,记下Dialog中的值,当再次打开这个Dialog的时候,还原这些值。这就需要把这些Dialog的值保存起来。Dialog的IDialogSettings类提供了这个功能。下边是使用方法:
    在上例"自定义Dialog"的代码上加入三个函数:
    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 == nullreturn;
            
    if (text.getText() == null || text.getText().equals("")){
                text.setText(settings.get(
    "value"));
            }

        }

        
    public IDialogSettings getTopSettings(){
            IDialogSettings topSettings 
    = new DialogSettings("system");
            
    try{
                topSettings.load(
    "content/system.xml");
            }
    catch(IOException e){
                System.out.println(e.getMessage());
            }

            
    return topSettings;
        }

    然后在覆写的buttonPressed函数中调用save
    protected void buttonPressed(int button){
            saveState();
        }
    在createDialogArea函数中加入取出数据
    protected 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;
        }
    最后,记得建立需要的文件,在当前workspace下建立文件夹content,然后在文件夹下建立system.xml文件。当然你也可以利用程序来实现。
    运行一下看看吧,是不是记住了上次填入的内容.
    SourceCODE
  • 相关阅读:
    Android中Activity之间通信
    vs2017 2019 下载更新慢的解决方法
    c# 判断某个类是否实现某个接口
    mvc api 关于 post 跟get 请求的一些想法[FromUri] 跟[FromBody] 同一个控制器如何实现共存
    vs2017 mvc 自定义路由规则 出现 404.0 错误代码 0x80070002
    C# winform 发布的时候没有app.config去哪儿了?
    安装c#服务
    Type.GetType反射的对象创建Activator.CreateInstance
    c# 谷歌动态口令对接
    asp.net mvc 异步控制器
  • 原文地址:https://www.cnblogs.com/kentyshang/p/858307.html
Copyright © 2020-2023  润新知