打开jdialog方法如下:
public void showdialog(JDialog dialog){
dialog.toFront();
dialog.setModal(true);
dialog.setVisible(true);
return dialog.getCloseFlg().equals(Constants.DIALOG_CLOSE);
}
按钮单击事件:
if (showdialog(new AAADialog()).equals(Constants.DIALOG_CLOSE)){
//do something
}
12 个解决方案
#1
将该dialog的parent设置为当前容器,只能操作完该dialog才可以操作parent。。。
#2
问题是我的dialog并不是JDialog,而是继承自BaseJDialog,它是共通类,我无权修改,别的公司做的,它是继承JDialog的。
#3
奇怪的是,现有系统里存在的一些dialog好用,而我的不好用,它们也是继承basejdialog,我没发现我的程序和它们有什么区别。
#4
setModal(true);
#5
showdialog里已经设了,不行啊
#6
是不是构造了之后再设置就无效了。
#7
原因找到了,setVisuable必须在设置是否为模态之后才能设置为true,而我在dialog的构造函数中已经设置为可视了,所以模态没起作用,但我必须这样设啊,因为只有setVisuable(true)之后,内容面板才能取得其真实宽度和高度,我要取它们自动进行一些布局,在不改变系统类的前提下,有什么办法解决吗?
#8
不可以在构造函数中先设置modal,再设置可视吗?:)
或者在dialog中提供方法获得size?
或者在dialog中提供方法获得size?
#9
to zhuokai:
这样做的结果是,在applet里点击按钮的时候会打开2个jdialog,第一个颜色什么的,都不正常,而且有很多东西被实例化,不知为何,第二个才是正常的。好像只有在调用者那里先设置modal后设置visiable才行,在jdialog里这样顺序的设置没用。
这样做的结果是,在applet里点击按钮的时候会打开2个jdialog,第一个颜色什么的,都不正常,而且有很多东西被实例化,不知为何,第二个才是正常的。好像只有在调用者那里先设置modal后设置visiable才行,在jdialog里这样顺序的设置没用。
#10
没碰到过这种,不清楚了。。。
#11
dialog.getCloseFlg().equals(Constants.DIALOG_CLOSE)
-----------
这是干什么呢?
模态对话框不用自己设置什么关闭标识。
不知道你有没有用过Delphi,delphi中对话框使用模式:
if(dlg==null)
dlg = new MyDialog();
if(dlg.showModal()){
//do somthing!
}
你的明白?
-------------------------------
因为只有setVisuable(true)之后,内容面板才能取得其真实宽度和高度,我要取它们自动进行一些布局
-------------------------------------------
这种其实你可以在构造函数中
setModal(false);
setVisable(true);
//布局
setVisable(false);
然后再作其它操作。
-----------
这是干什么呢?
模态对话框不用自己设置什么关闭标识。
不知道你有没有用过Delphi,delphi中对话框使用模式:
if(dlg==null)
dlg = new MyDialog();
if(dlg.showModal()){
//do somthing!
}
你的明白?
-------------------------------
因为只有setVisuable(true)之后,内容面板才能取得其真实宽度和高度,我要取它们自动进行一些布局
-------------------------------------------
这种其实你可以在构造函数中
setModal(false);
setVisable(true);
//布局
setVisable(false);
然后再作其它操作。
#12
dialog.getCloseFlg().equals(Constants.DIALOG_CLOSE)这个是我在按钮里判断一下,等dialog关闭时做一些操作。在构造函数中这样setModal(false);setVisable(true);不行,会打开2次,第一次是不正常的显示,第2次才正常。而且我必须通过showdialog这个系统方法去打开dialog,可能再在构造函数里设置可见、模态可能就不行了。
#1
将该dialog的parent设置为当前容器,只能操作完该dialog才可以操作parent。。。
#2
问题是我的dialog并不是JDialog,而是继承自BaseJDialog,它是共通类,我无权修改,别的公司做的,它是继承JDialog的。
#3
奇怪的是,现有系统里存在的一些dialog好用,而我的不好用,它们也是继承basejdialog,我没发现我的程序和它们有什么区别。
#4
setModal(true);
#5
showdialog里已经设了,不行啊
#6
是不是构造了之后再设置就无效了。
#7
原因找到了,setVisuable必须在设置是否为模态之后才能设置为true,而我在dialog的构造函数中已经设置为可视了,所以模态没起作用,但我必须这样设啊,因为只有setVisuable(true)之后,内容面板才能取得其真实宽度和高度,我要取它们自动进行一些布局,在不改变系统类的前提下,有什么办法解决吗?
#8
不可以在构造函数中先设置modal,再设置可视吗?:)
或者在dialog中提供方法获得size?
或者在dialog中提供方法获得size?
#9
to zhuokai:
这样做的结果是,在applet里点击按钮的时候会打开2个jdialog,第一个颜色什么的,都不正常,而且有很多东西被实例化,不知为何,第二个才是正常的。好像只有在调用者那里先设置modal后设置visiable才行,在jdialog里这样顺序的设置没用。
这样做的结果是,在applet里点击按钮的时候会打开2个jdialog,第一个颜色什么的,都不正常,而且有很多东西被实例化,不知为何,第二个才是正常的。好像只有在调用者那里先设置modal后设置visiable才行,在jdialog里这样顺序的设置没用。
#10
没碰到过这种,不清楚了。。。
#11
dialog.getCloseFlg().equals(Constants.DIALOG_CLOSE)
-----------
这是干什么呢?
模态对话框不用自己设置什么关闭标识。
不知道你有没有用过Delphi,delphi中对话框使用模式:
if(dlg==null)
dlg = new MyDialog();
if(dlg.showModal()){
//do somthing!
}
你的明白?
-------------------------------
因为只有setVisuable(true)之后,内容面板才能取得其真实宽度和高度,我要取它们自动进行一些布局
-------------------------------------------
这种其实你可以在构造函数中
setModal(false);
setVisable(true);
//布局
setVisable(false);
然后再作其它操作。
-----------
这是干什么呢?
模态对话框不用自己设置什么关闭标识。
不知道你有没有用过Delphi,delphi中对话框使用模式:
if(dlg==null)
dlg = new MyDialog();
if(dlg.showModal()){
//do somthing!
}
你的明白?
-------------------------------
因为只有setVisuable(true)之后,内容面板才能取得其真实宽度和高度,我要取它们自动进行一些布局
-------------------------------------------
这种其实你可以在构造函数中
setModal(false);
setVisable(true);
//布局
setVisable(false);
然后再作其它操作。
#12
dialog.getCloseFlg().equals(Constants.DIALOG_CLOSE)这个是我在按钮里判断一下,等dialog关闭时做一些操作。在构造函数中这样setModal(false);setVisable(true);不行,会打开2次,第一次是不正常的显示,第2次才正常。而且我必须通过showdialog这个系统方法去打开dialog,可能再在构造函数里设置可见、模态可能就不行了。