要想创建一个对话框,需要从JDialog派生一个类,这与应用程序窗口派生于JFrame的过程完全一样。具体过程如下:
1 )在对话框构造器中,调用超类JDialog的构造器。
2) 添加对话框的用户界面组件。
3 )添加事件处理器。
4) 设置对话框的大小。
在调用超类构造器时,需要提供拥有者框架(owner frame)、对话框标题及模式特征。
拥有者框架控制对话框的显承位置,如果将拥有者标识为null,那么对话框将由一个隐藏框架所拥有。
模式特征将指定对话框处于显示状态时,应用程序中其他窗口是否被锁住。无模式对话框不会锁住其他窗口,而有模式对话框将锁住应用程序中的所有其他窗口(除对话框的子窗口外)。用户经常使用的工具栏就是无模式对话框,另一方面,如果想强迫用户在继续操作之前提供一些必要的信息就应该使用模式对话框。
下面是一个例子:
DialogFrame.java文件
package creatDialog; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * Created by IBM on 2017/10/9. */ public class AboutDialog extends JDialog { public AboutDialog(JFrame owner){ super(owner,"About DialogTest",true); add(new JLabel("<html><h1><i>Core Java</i></h1><hr>By Horstmann and Gary Cornell</html>"), BorderLayout.CENTER); JButton ok=new JButton("OK"); ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setVisible(false); } }); JPanel panel=new JPanel(); panel.add(ok); add(panel,BorderLayout.SOUTH); pack(); } }
AboutDialog.java文件:
package creatDialog; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * Created by IBM on 2017/10/9. */ public class AboutDialog extends JDialog { public AboutDialog(JFrame owner){ super(owner,"About DialogTest",true); add(new JLabel("<html><h1><i>Core Java</i></h1><hr>By Horstmann and Gary Cornell</html>"), BorderLayout.CENTER); JButton ok=new JButton("OK"); ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setVisible(false); } }); JPanel panel=new JPanel(); panel.add(ok); add(panel,BorderLayout.SOUTH); pack(); } }
运行结果: