前言
JDialog窗体是窗体中的另一种类型的窗体,指对话框窗体。与JFrame窗体类似,绝大部分对于JFrame窗体使用的方法,对于JDialog窗体也同样适用。
一、JDialog窗体的介绍
JDialog窗体是Swing组件中的对话框组件,继承了AWT组件中的java.awt.Dialog类。JDialog窗体实质上就是另一种类型的窗体。在使用的同时也需要调用 getContentPane() 方法将窗体转换为容器,然后在容器中设置窗体的特性。
二、JDialog窗体的使用
1.JDialog的常用构造方法
JDialog类的几种常用的构造方法(方法名是可变的):
(1)public JDialog():创建了一个没有标题和父窗体的对话框
(2)public JDialog(Frame f):创建了一个有指定父窗体对象的对话框,没有给父窗体标题
(3)public JDialog(Frame f, Boolean model):创建了一个指定类型的对话框,并指定了父窗体,没有给父窗体标题
(4)public JDialog(Frame f,String title):创建了一个指定父窗体和父窗体标题的对话框
(5)public JDialog(Frame f,String title,boolean modle):创建了一个指定了父窗体,父窗体标题和对话框模式的对话框。
实例展示(展示的是最全的第五个,以上方法使用方式一致,引用参数不同):
import javax.swing.*; import java.awt.*; public class JDialogDemo2{ public JDialogDemo2(Frame f, String title, boolean modle) { //创建一个新的特定的对话框窗体,可指定了窗体对象,标题,和模式 JDialog dialog = new JDialog(f, title, modle); //设定对话框窗体的大小 dialog.setSize(300, 200); //设定对话框窗体的关闭方式 dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); //设定该窗体可见 dialog.setVisible(true); } public static void main(String[] args) { //创建一个JFrame对象,在实例化JDialogDemo2对象时调用。 JFrame frame = new JFrame("Main Frame"); frame.setSize(400, 300); //创建一个JDialogDemo2的对象,直接调用JDialogDemo2的构造方法,定义了窗体对象,标题,和模式 JDialogDemo2 dialogDemo = new JDialogDemo2(frame, "Dialog Title", true); } }
相关解释:
1.创建一个JDialogDemo2的构造方法,其中括号中的内容:第一个值为创建的JFrame对象,第二个值为对话框窗体的标题,第三个为对话框窗体的模式(该参数为布尔值,确定是否为模态)。
注:模态对话框是一种特殊类型的窗口,它阻止用户与应用程序中的其他窗口进行交互,直到该对话框被关闭。这意味着在模态对话框打开期间,用户无法将焦点切换到其他窗口或执行其他操作。只有当模态对话框关闭后,用户才能继续与应用程序进行交互。
2.setSize()方法:设置组件的宽和高。
setSize(250,100); //宽250像素,高100像素
结果展示:
3.创建一个main静态方法:
(1)创建一个JFrame对象,方便在实例化JDialogDemo2有使用的JFrame对象使用。
(2)创建一个JDialogDemo2的对象,直接调用JDialogDemo2的构造方法,定义了窗体对象,标题,和模式。
2.实例展示及分析
(1)实例介绍:窗体有按钮可以弹出对话框,并且不处理该对话框,无法进行其他操作。
(2)代码展示:
import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class JDialogDemo extends JDialog{ public JDialogDemo(JFrame frame){ /* * 第一个参数,父窗体对象 * 第二个参数,对话框标题 * 弟三个参数,是否阻塞父窗体 */ super(frame, "对话框标题", true); //对话框阻塞父窗体 Container c = getContentPane(); c.add(new JLabel("这是一个对话框")); setBounds(100, 100, 100, 100); //设置窗体坐标和大小 } public static void main(String[] args) { JFrame frame = new JFrame("父窗体"); frame.setBounds(50, 50, 300, 300); Container c = frame.getContentPane(); JButton btn = new JButton("弹出对话框"); c.setLayout(new FlowLayout()); //设置布局,使用流布局 c.add(btn); frame.setVisible(true); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e){ JDialogDemo d = new JDialogDemo(frame); d.setVisible(true); //对话框窗体可见,最好在静态方法中使用(涉及到java语言的底层逻辑) } });//添加动作监听 } }
(3)补充解释:
super关键字调用:调用了JDialog类的构造方法,即 public JDialog(Frame f,String title,boolean modle) 。
流布局:流布局(Flow Layout)是一种在图形用户界面(GUI)中常用的布局管理器。它按照组件的添加顺序,从左到右依次排列,并在水平方向上自动换行。
运行结果:
点击按钮
由于设置为模态对话框,关闭对话框后,才能对父窗体进行操作。
总结
以上就是对java语言中Swing程序设计中JDialog窗体的使用的介绍。技术内容可能有所过时,适合在校新生学习,欢迎补充指正,博主会及时进行反馈。