table中点击某个单元格,弹出一个对话框,对话框中有两个按钮,确定和取消,点击确定按钮后,隐藏掉该对话框。确定按钮有个监听事件,去掉一个方法,在该方法中写了dialog.setVisible(false),可是没有关闭对话框,怎么回事啊?

解决方案 »

  1.   

    JButton bt = new JButton("确定");
    bt.addActionListener(new ActionListener(){
    //取得选择的项的索引
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    int index[] = list.getSelectedIndices();
    for(int i = 0 ; i< index.length; i++){
    index[i] = index[i]+1;
    if(i == index.length )
    strIndex += index[i] ;
    else if(i == 0)
    strIndex =  index[i] + ",";
    else
    strIndex += index[i] + ",";
    }
    System.out.println("取得列索引,用于返回,它的值是  :   " + strIndex);
    MyCellEditor.getInstance().setIndex(strIndex);
    MyCellEditor.getInstance().getCellEditorValue();
    MyCellEditor.getInstance().stopCellEditing();
    list.clearSelection();
    }
    });
      

  2.   

    @Override
    public boolean  stopCellEditing() {
    // TODO Auto-generated method stub
    /*System.out.println("stopCellEditing");
    tasktypeEdit.getInstance().setVisible(false);*/
    //点击确定按钮时,调用该方法

    dialog.setVisible(false);
    System.out.println("编辑结束了");
    super.stopCellEditing();
    return true;
    }
      

  3.   

    代码不全,没办法分析,给你建议
    1 确认是否在点击按钮后会执行 dialog.setVisible(false);
    2 确认dialog是确认按钮所在窗体的顶级容器。
      

  4.   

    此外,你的问题应该叫隐藏不了,visiable是隐藏属性,关闭应该用dispose()
      

  5.   

    呵呵,隐藏也可以,原来以为点表格的任一处还出现对话框是因为对话框没有关闭,所以也用了dispose()
    ,还是不管用,现在可以了,因为多重载的函数没有实现,后来把不用的重载函数删掉就可以了。
      

  6.   

    因为只用到
    /**
      * 编辑完成后,返回所得的索引值
      */
    @Override
    public Object getCellEditorValue() {
    // TODO Auto-generated method stub
    return strIndex;
    }

    /**
     * 返回true,则能够接受所有的事件类型
     */
    @Override
    public boolean isCellEditable(EventObject anEvent) {
    // TODO Auto-generated method stub
    return true;
    }

    /**
     * 一旦安装了编辑器,该方法就会被调用
     */
    @Override
    public boolean shouldSelectCell(EventObject anEvent) {
    dialog.setVisible(true);
    return true;
    }

    /**
     * 编辑完成后,调用该方法,应该隐藏掉对话框
     * 可能部分被编辑,应该判断当前值是否有效,返回true,否则返回false
     * 目前没有做判断
     */
    @Override
    public boolean  stopCellEditing() {
    dialog.setVisible(false);
    super.stopCellEditing();
    return true;
    }

    /**
     * 编辑取消时,调用该方法,隐藏掉对话框
     * 当关闭对话框时,也应该调用该方法
     */
    @Override
    public void cancelCellEditing() {
    dialog.setVisible(false);
    super.cancelCellEditing();
    }
    这几个方法,其他的不用的方法删掉就可以了。
    我也表到不明白,呵呵
      

  7.   

    像这类问题你可以自己调试程序观察的,可以设置断点,到关键位置再按行一步步执行,观察程序运行。dispose()执行后必然关闭窗体,如果再出现只能是重新创建了窗体。
    setVisiable(false)是同样的道理,隐藏后同样不会出现,如果出现,只能说明是重新设置了visiable属性