|
对话框与框架(JFrame)有一些相似,但它一般是一个临时的窗口,主要用于显示提示信息或接受用户输入。所以,在对话框中一般不需要菜单条,也不需要改变窗口大小。此外,在对话框出现时,可以设定禁止其他窗口的输入,直到这个对话框被关闭。对话框是由 JDialog 类实现的,JDialog 类的构造方法有多种:[li] ·JDialog(); [li] ·JDialog(Dialog owner); [li] ·JDialog(Dialog owner,boolean modal); [li] ·JDialog(Dialog owner,String title); [li] ·JDialog(Dialog owner,String title,boolean modal); [li] ·JDialog(Dialog owner,String title,boolean modal,GraphicsConfiguration gc); [li] ·JDialog(Frame owner); [li] ·JDialog(Frame owner,boolean modal); [li] ·JDialog(Frame owner,String title); [li] ·JDialog(Frame owner,String title,boolean modal); [li] ·JDialog(Frame owner,String title,boolean modal,GraphicsConfiguration gc);[/li]
其中 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();
}
}
运行结果如下图所示:
|
|