|
对话框与框架(JFrame)有一些相似,但它一般是一个临时的窗口,主要用于显示提示信息或接受用户输入。所以,在对话框中一般不需要菜单条,也不需要改变窗口大小。此外,在对话框出现时,可以设定禁止其他窗口的输入,直到这个对话框被关闭。对话框是由 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); } /* 响应窗体的按钮事件 */ public void actionPerformed(ActionEvent e){ if(e.getActionCommand().equals("显示对话框")){ HelloDialog hw=new HelloDialog(this); } } /* 窗体按钮监听器 */ class HelloDialog implements ActionListener{ JDialog jDialog1=null; //创建一个空的对话框对象 HelloDialog(JFrame jFrame){ /* 初始化jDialog1 * 指定对话框的拥有者为jFrame,标题为"Dialog",当对话框为可视时,其他构件不能 * 接受用户的输入(静态对话框) */ jDialog1=new JDialog(jFrame,"Dialog",true); //创建一个按钮对象,该对象被添加到对话框中 JButton jButton1=new JButton("关闭"); jButton1.addActionListener(this); //将"关闭"按钮对象添加至对话框容器中 jDialog1.getContentPane().add(jButton1); /* 设置对话框的初始大小 */ jDialog1.setSize(80,80); /* 设置对话框初始显示在屏幕当中的位置 */ jDialog1.setLocation(450,450); /* 设置对话框为可见(前提是生成了HelloDialog对象) */ jDialog1.setVisible(true); } //响应对话框中的按钮事件 public void actionPerformed(ActionEvent e){ if(e.getActionCommand().equals("关闭")){ // 以下语句等价于jDialog1.setVisible(false); /* public void dispose() * 释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。 * 即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统, * 并将它们标记为不可显示。 */ jDialog1.dispose(); } } } public static void main(String[] args){ JDialogDemo test=new JDialogDemo(); } }
运行结果如下图所示:

|
|