近日在做java项目时遇到的难点,就是想实现当用户按“退出”按钮时,弹出一个窗口,再次确认用户是否真的要退出本系统并且只能操作当前这个窗口,这个功能,在很多系统都有,见得很多。
刚开始时,我像往常思路一样新建一个继承于JFrame的类Outif,然后各种布局和美化,最后是主窗体的“退出”按钮持有Outif的引用,但是运行时和想的不一样,当弹出Outif窗口
时,还能操作主窗体! 这样不行啊,于是百度了下,“java如何锁定当前屏幕,只能操作当前窗口?”有人说要做成模式的,额,不懂,有人说用setEnabled(false);和setAlwaysOnTop(true);额,反正我实现不了,有人说用JDialog就行,我印象中的JDialog是很简陋和固定的,不是我想要的效果,还有美化,于是我百度了下JDialog~
JDialog百度百科:
对话框与框架(JFrame)有一些相似,但它一般是一个临http://blog.163.com/yyc731@126/blog/static/1118869352009315103359690/时的窗口,主要用于显示提示信息或接受用户输入。所以,在对话框中一般不需要菜单条,也不需要改变窗口大小。此外,在对话框出现时,可以设定禁止其他窗口的输入,直到这个对话框被关闭。对话框是由 JDialog 类实现的,JDialog 类的构造方法有多种:
JDialog();
JDialog(Dialog owner);
JDialog(Dialog owner,boolean modal);
JDialog(Dialog owner,String title);
JDialog(Dialog owner,String title,boolean modal);
JDialog(Dialog owner,String title,boolean modal,GraphicsConfiguration gc);
JDialog(Frame owner);
JDialog(Frame owner,boolean modal);
JDialog(Frame owner,String title);
JDialog(Frame owner,String title,boolean modal);
JDialog(Frame owner,String title,boolean modal,GraphicsConfiguration gc);
其中 Frame 类型的参数表示对话框的拥有者,boolean 类型参数用于控制对话框的工作方式。如果为true,则对话框为可视时,其他构件不能接受用户的输入,此时的对话框称为静态的;如果为false,则对话框和所属窗口可以互相切换,彼此之间没有顺序上的联系。String类型参数作为对话框的标题,在构造对话框之后,就可以添加其他的构件。
对话框使用示例:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class JDialogDemo extends JFrame implements ActionListener{
public JDialogDemo(){
Container contentPane=this.getContentPane();
JButton jButton1=new JButton("显示对话框");
jButton1.addActionListener(this);
contentPane.add(jButton1);
this.setTitle("JDialogDemo");
this.setSize(300,300);
this.setLocation(400,400);
this.setVisible(true);
}