当前位置: 技术问答>java相关
如何设定“确定”和“取消”按钮的退出属性?(昨日未解决,今日重问)在线等待
来源: 互联网 发布时间:2015-06-11
本文导语: 我自己扩展了一个JDialog的对话框,是定义给其它Frame调用的,上面添加有一些控件和两个按钮:“确定”和“取消”按钮。(我两个按钮的按下响应都有退出该对话框功能) 现在问题来了,就是dispose()退出该对话框...
我自己扩展了一个JDialog的对话框,是定义给其它Frame调用的,上面添加有一些控件和两个按钮:“确定”和“取消”按钮。(我两个按钮的按下响应都有退出该对话框功能)
现在问题来了,就是dispose()退出该对话框后,我怎么判断该话框的退出是因为点击“确定”按钮还是“取消”按钮还是点击窗口关闭“×”而退出的?
比如用JOptionPane的帮助里面就有这种例子:
JOptionPane pane = new JOptionPane(arguments);
pane.set.Xxxx(...); // Configure
JDialog dialog = pane.createDialog(parentComponent, title);
dialog.show();
Object selectedValue = pane.getValue();
通过JOptionPane.YES_NO_OPTION参数生成的JDialog,就可以利用上面selectedValue的值来判断:如selectedValue为“YES”就是按钮“YES”退出,为“NULL”就是“×”退出……。
现在我就想问我该如何才能设置这个自定义的对话框的类似按钮的退出值selectedValue ?(听说似乎是设置按钮的某个属性……)
包括三个:确定按钮、退出按钮和窗口“×”退出
搞java的兄弟救命啊!!!!(若不行帮我问问也好)
我弄了两天都没搞定,提问有人说用个BackInfo变量,定义getBackInfo()方法取值,但是我试过,通过按钮dispose后这个变量的值还是默认的,根本没有改变!!
救命啊
现在问题来了,就是dispose()退出该对话框后,我怎么判断该话框的退出是因为点击“确定”按钮还是“取消”按钮还是点击窗口关闭“×”而退出的?
比如用JOptionPane的帮助里面就有这种例子:
JOptionPane pane = new JOptionPane(arguments);
pane.set.Xxxx(...); // Configure
JDialog dialog = pane.createDialog(parentComponent, title);
dialog.show();
Object selectedValue = pane.getValue();
通过JOptionPane.YES_NO_OPTION参数生成的JDialog,就可以利用上面selectedValue的值来判断:如selectedValue为“YES”就是按钮“YES”退出,为“NULL”就是“×”退出……。
现在我就想问我该如何才能设置这个自定义的对话框的类似按钮的退出值selectedValue ?(听说似乎是设置按钮的某个属性……)
包括三个:确定按钮、退出按钮和窗口“×”退出
搞java的兄弟救命啊!!!!(若不行帮我问问也好)
我弄了两天都没搞定,提问有人说用个BackInfo变量,定义getBackInfo()方法取值,但是我试过,通过按钮dispose后这个变量的值还是默认的,根本没有改变!!
救命啊
|
你没有返回值的原因是dialog.show()在主frame里面会继续往下执行
所以需要在你扩展JDialog里面(不妨为NewDialog),构造函数最好带上参数(Frame owner, boolean modal)//modal为真是就是在调用这个dialog时主页面不可选……,也就是主页面里面的程序不会继续往下执行,类似showModalDialog
另外你要返回按钮的属性值来判断是哪个按钮退出。这很好办。
在主Frame里面重写按钮的事件,即写一个class extends NewDialog吧(扩展你自己写的哪个Dialog)。
比如在你的主frame里面定义一个String bakeInfo;
class NewDialogInfo extends NewDialog{
public NewDialogInfo (Frame owner, boolean modal) {
super(owner, modal);
}
void jBOK_actionPerformed(ActionEvent e) {
backInfo = "OK";
this.dispose();
}
}
需要调用NewDialog的时候使用:
backInfo = "NO";
NewDialogInfo newd = new NewDialogInfo(this, true);
sumi.show();
按确定退出,backInfo就会置成OK,我试过,可以成功。
所以需要在你扩展JDialog里面(不妨为NewDialog),构造函数最好带上参数(Frame owner, boolean modal)//modal为真是就是在调用这个dialog时主页面不可选……,也就是主页面里面的程序不会继续往下执行,类似showModalDialog
另外你要返回按钮的属性值来判断是哪个按钮退出。这很好办。
在主Frame里面重写按钮的事件,即写一个class extends NewDialog吧(扩展你自己写的哪个Dialog)。
比如在你的主frame里面定义一个String bakeInfo;
class NewDialogInfo extends NewDialog{
public NewDialogInfo (Frame owner, boolean modal) {
super(owner, modal);
}
void jBOK_actionPerformed(ActionEvent e) {
backInfo = "OK";
this.dispose();
}
}
需要调用NewDialog的时候使用:
backInfo = "NO";
NewDialogInfo newd = new NewDialogInfo(this, true);
sumi.show();
按确定退出,backInfo就会置成OK,我试过,可以成功。
|
在你的程序里面加一个变量private int returnCode = -1 ;//按整个Dialog右上的"关闭"
当按下"确定",returnCode = 0 ;
当按下"取消", returnCode = 1 ;
这样三种状态不就确定下来了嘛
当按下"确定",returnCode = 0 ;
当按下"取消", returnCode = 1 ;
这样三种状态不就确定下来了嘛
|
U can read the sources of JDK ,It how to get the SelectValue
JDialog dialog = pane.createDialog(parentComponent, title);
dialog.show();
Object selectedValue = pane.getValue();
JDialog dialog = pane.createDialog(parentComponent, title);
dialog.show();
Object selectedValue = pane.getValue();
|
这样,你把你的代码贴上来,!!!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。