之前我们讲了怎么建立一个简易的窗口,链接:http://t.csdnimg.cn/l7QSs,接下来继续讲解窗口的进阶。
对话框
上一篇文章中我们讲到了JFrame是一种顶层容器,本文接下来介绍其余的顶层容器。
-
跟JFrame一样,,这几个顶层容器都是抽象类。
-
以下是这几个顶层容器的构造方法:
-
JFrame:
JFrame() // 创建一个无标题的窗口
JFrame(String title) // 创建一个指定标题的窗口 -
JApplet:
JApplet() // 创建一个新的JApplet
-
JDialog:
JDialog() // 创建一个无标题的对话框
JDialog(Frame owner) // 创建一个指定所有者的对话框
JDialog(Dialog owner) // 创建一个指定所有者的对话框
JDialog(Frame owner, String title) // 创建一个指定所有者和标题的对话框
JDialog(Dialog owner, String title) // 创建一个指定所有者和标题的对话框 -
JWindow:
JWindow() // 创建一个无标题的窗口
-
-
并且JFrame的各种设置方法大部分都适用于这几个顶层容器。
需要注意的是JDialog是一种特殊的容器,它可以被JFrame容纳,其余的顶层容器是无法互相容纳的。
根据它们的构造方法,我们可以根据上一文中jFrame的构造方法,照葫芦画瓢写出各自的代码。
直接构造JDialog
import javax.swing.*;
import java.awt.*;public class test {public static void main(String[] args) {JDialog jDialog = new JDialog(); //创建JDialog对象jDialog.setTitle("JDialog"); //设定标题jDialog.setBounds(300,300,500,500); //设定位置和大小jDialog.setVisible(true); //设置可见性jDialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
//退出方式JLabel label = new JLabel("This is a JDialog"); //创建一个JLabel标签label.setHorizontalAlignment(SwingConstants.CENTER); //设定位置居中label.setVisible(true); //设置可见性jDialog.add(label); //将其添加到对话框中}
}
创建属于窗口JFrame的对话框JDialog
下面是一个带有对话框的窗口代码:
import javax.swing.*;
import java.awt.*;class jDialog extends JDialog {public jDialog (Frame frame, String title, int x, int y, int width, int height) {super(frame, title);setBounds(x,y,width,height);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);}
}
class jFrame extends JFrame {public jFrame (String title, int x, int y, int width, int height) {super(title); //调用父类构造方法设置标题setBounds(x, y, width, height); //一步到位把位置和大小设置好setVisible(true); //设置窗口可见性setDefaultCloseOperation(EXIT_ON_CLOSE); //设置关闭方式JLabel jLabel = new JLabel("这是一个带有标题的窗口");//这是一个标签组件jLabel.setHorizontalAlignment(SwingConstants.CENTER); //设置文本位置add(jLabel); //调用add函数将标签组件添加到抽口当中jDialog jDialog1 = new jDialog(this,"jDialog",x+20,y+20,width,height);//这里直接将对话框添加到窗口中了,不用再调用add函数}
}
public class test {public static void main(String[] args) {jFrame frame = new jFrame("frame",100,100,500,500);}
}
注意:由于jDialog是被jFrame容纳的,因此关闭jFrame时也会同时退出JDialog。