目录
01 对话框介绍
02 实例代码
01 对话框介绍
对话框是一个临时的可移动窗口,且要依赖于其他窗口,当它所依赖的窗口消失或最小化时,对话框也将消失。当窗口还原时,对话框会自动恢复。一般地,要先创建一个窗口类,再创建一个对话框类,且让对话框依附于窗口。对话框分为强制型和非强制型两种。强制型对话框被关闭之前,其他窗口无法接收任何形式的输入,也就是该对话过程不能中断,这样的窗口也称为模式窗口。非强制型对话框可以中断对话过程,去响应对话框之外的事件。对话框的构造方法主要有以下几种。
•JDialog(Dialog owner):创建一个没有标题但将指定的对话框作为其所有者的无模式对话框。
•JDialog( Dialog owner, boolean modal):创建一个没有标题但有指定所有者的对话框,boolean型参数modal指定对话框是有模式或无模式。
•JDialog(Dialog owner, String title):创建一个具有指定标题和指定所有者的无模式对话框。
•JDialog( Dialog owner, String title, boolean modal):创建一个具有指定标题和指定所有者的对话框,boolean型参数 modal指定对话框是有模式或无模式。
•JDialog(Frame owner):创建一个没有标题但将指定的框架作为其所有者的无模式对话框。
•JDialog(Frame owner, boolean modal):创建一个没有标题但有指定所有者的对话框,boolean型参数 modal指定对话框是有模式或无模式。
•JDialog(Frame owner, String title):创建一个具有指定标题和指定所有者框架的无模式对话框。
•JDialog( Frame owner, String title, boolean modal):创建一个具有指定标题和指定所有者框架的对话框,boolean型参数 modal指定对话框是有模式或无模式
上述构造方法中都带有一个Dialog型或Frame型的参数,这个参数指定了对话框的拥有者,也就是它的依赖窗口。例如命令:
JDialog dialog=new JDialog(frame,“Dialog”,true);
创建了一个标题为“Dialog”的模式对话框,该对话框为框架frame所拥有。刚刚创建的对话框是不可见的,需要调用setVisible(true)方法才能将其显示出来。当对话框不需要显示时,调用setVisible(false)方法可以隐藏对话框。对话框可对各种窗口事件进行侦听,例如激活窗口和关闭窗口等。与框架类似,对话框也是顶层容器,可以向对话框的内容窗格中添加各种组件。
02 实例代码
实例代码如下
package com.java.pc;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Subject implements ActionListener {
JFrame frame;
JDialog dialog;
JButton button;
public static void main(String args[])
{
Subject s=new Subject();
s.go();
}
public void go()
{
frame=new JFrame("JDialog Demo");
dialog=new JDialog(frame,"Dialog",true);
dialog.getContentPane().add(new JLabel("Hello,I`m a Dialog"));
dialog.setSize(60,40);
button=new JButton("Show Dialog");
button.addActionListener(this);
Container cp=frame.getContentPane();
cp.add(button,BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200,150);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
dialog.setVisible(true);
}
}
最终实现效果如下