0

我在我的程序中创建了一个通用对话框的静态实例

static GenericDialog SaveDialog = null;

下面是显示对话框的代码

public boolean DispSaveDialog()
{
    //gd.addStringField("Identity : ", "annot");
    if(SaveDialog == null)
    {
        SaveDialog =  new GenericDialog("Save");
        Panel idnPanel = new Panel();
        idnPanel.add(new Label("Identity"));
        idnTextComp = new TextField("annot");
        csPrefix = idnTextComp.getText();
        TextListener tl = new TextListener() {

            @Override
            public void textValueChanged(TextEvent e) {
                // TODO Auto-generated method stub
                csPrefix = idnTextComp.getText();
            }
        };
        idnTextComp.addTextListener(tl);
        idnPanel.add(idnTextComp);
        SaveDialog.addPanel(idnPanel);
        final TextComponent textComponent = new TextField();
        ActionListener al = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                String label = e.getActionCommand();                
                //csPrefix = gd.getNextString();
                if (label=="Browse")
                {                   
                    String csFilename = imp.getTitle();                 
                    csTextFileName = FileNameProcess( csFilename );     
                }   
                textComponent.setText(csTextFileName);
            }
        };
        Button btBrowse = new Button("Browse");
        btBrowse.addActionListener(al);     
        Panel panel = new Panel();

        panel.add(new Label("Folder : "));
        //textComponent.setBounds(gd.getBounds());
        panel.add(textComponent);
        panel.add( btBrowse );  
        SaveDialog.addPanel(panel);         
    }   
    SaveDialog.showDialog();
    return true;
}

我面临的问题是,当我第二次打开对话框时,不会触发 OK 和 Cancel 事件。我觉得这个问题很愚蠢,抱歉并提前感谢。

4

1 回答 1

0

上面的代码是这样的,当第二次显示通用对话框时,旧值将被保留。我做了一个解决方法,我将第一次输入的字符串保存在静态字符串变量中,并在检查 null 后加载它们价值观。

这不是解决方案,只是一种解决方法,因此我可以按时关闭问题。:(

于 2012-06-07T03:56:41.703 回答