java 中对话框关闭不了 table中点击某个单元格,弹出一个对话框,对话框中有两个按钮,确定和取消,点击确定按钮后,隐藏掉该对话框。确定按钮有个监听事件,去掉一个方法,在该方法中写了dialog.setVisible(false),可是没有关闭对话框,怎么回事啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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(); } }); @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; } 代码不全,没办法分析,给你建议1 确认是否在点击按钮后会执行 dialog.setVisible(false);2 确认dialog是确认按钮所在窗体的顶级容器。 此外,你的问题应该叫隐藏不了,visiable是隐藏属性,关闭应该用dispose() 呵呵,隐藏也可以,原来以为点表格的任一处还出现对话框是因为对话框没有关闭,所以也用了dispose(),还是不管用,现在可以了,因为多重载的函数没有实现,后来把不用的重载函数删掉就可以了。 因为只用到/** * 编辑完成后,返回所得的索引值 */ @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(); }这几个方法,其他的不用的方法删掉就可以了。我也表到不明白,呵呵 像这类问题你可以自己调试程序观察的,可以设置断点,到关键位置再按行一步步执行,观察程序运行。dispose()执行后必然关闭窗体,如果再出现只能是重新创建了窗体。setVisiable(false)是同样的道理,隐藏后同样不会出现,如果出现,只能说明是重新设置了visiable属性 java泛型如何得到T的class 菜鸟求助,寻求一个查找匹配字符串的方法。。 求一个可以伸缩界面的做法? 关于网络传输对象的问题! myeclipse如何配置tomcat服务器 java编程思想中文第二版和第一版有什么区别? 求JAVA程序员 请问jdk安装之后还需要设置吗?怎么设置! jBuilder4中的照齐问题 紧急求助:没有网卡的pc,如何安装网络协议 hibernate 外键疑问 如何限制jTextField的输入类型
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();
}
});
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;
}
1 确认是否在点击按钮后会执行 dialog.setVisible(false);
2 确认dialog是确认按钮所在窗体的顶级容器。
,还是不管用,现在可以了,因为多重载的函数没有实现,后来把不用的重载函数删掉就可以了。
/**
* 编辑完成后,返回所得的索引值
*/
@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();
}
这几个方法,其他的不用的方法删掉就可以了。
我也表到不明白,呵呵
setVisiable(false)是同样的道理,隐藏后同样不会出现,如果出现,只能说明是重新设置了visiable属性