java常用窗体(JFrame、JDialog)
JFrame窗体JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些Swing组件的容器,在开发应该程序时,可以通过继承javax.swing.JFrame类创建一个窗体,在这个窗体中添加组件,同时为组件设置事件,由于该窗体继承了JFrame类,所以它拥有最大化、最小化、关闭按钮等按钮,下面将详细介绍JFrame窗体在java应用程序中的使用方法。...
JFrame窗体
JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些Swing组件的容器,在开发应该程序时,可以通过继承javax.swing.JFrame类创建一个窗体,在这个窗体中添加组件,同时为组件设置事件,由于该窗体继承了JFrame类,所以它拥有最大化、最小化、关闭按钮等按钮,下面将详细介绍JFrame窗体在java应用程序中的使用方法。
JFrame类的常用构造方法有以下两种形式:
- public JFrame():创建一个初始不可见、没有标题的新窗体;
- public JFrame(String title):创建一个不可见但具有标题的窗体;
例如,创建一个JFrame窗体对象,代码如下:
JFrame jf = new JFrame("窗体");
Container container = jf.getContentPane();
上面代码在创建完JFrame对象后,使用getContentPane()方法创建了一个Container对象,这是因为Swing组件的窗体通常与组件和容器相关,所以在JFrame对象创建完成后,需要调用getContentPane()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器,通常,这个容器用包含和显示组件,如果需要将组件添加至容器,可以使用来自Container类的add()方法进行操作,例如以下代码:
container.add(new JButton("按钮"));
在容器中添加组件后,也可以使用Container类的remove()方法将这些组件从容器中删除,例如:
container.remove(new JButton("按钮"));
创建完JFrame窗体之后,需要对窗体进行设置,比如设置窗体的位置、大小、是否可见等。这些操作通过JFrame类提供的相应方法来实现,下表中对JFrame类的常用方法进行讲解:
方法 | 功能描述 |
---|---|
setBounds(int x,int y,int width,int leight) | 设置组件左上角顶点的坐标为(x,y),宽度为width,高度为height |
setLocation(int x,int y) | 设置组件的左上角坐标为(x,y) |
setSize(int width,int leight) | 设置组件的宽度为width,高度为height |
setVisibale(boolean b) | 设置组件是否可见,参数为true表示可见,参数为false表示不可见 |
setDefaultCloseOperation(int operation) | 设置关闭JFrame窗体的方式,默认值为DISPOSE_ON_CLOSE |
java为实现关闭JFrame窗体提供了多种方式,常用的有4种,如下: | |
DO_NOTHING_ON_CLOSE | 表示单击关闭按钮时无任何操作 |
DISPOSE_ON_CLOSE | 表示单击关闭按钮时隐藏并释放窗口 |
HIDE_ON_CLOSE | 表示单击关闭按钮时将当前窗口隐藏 |
EXIT_ON_CLOSE | 表示单击关闭按钮时退出当前窗口并关闭程序 |
实例:创建标签组件并添加到窗体中,代码如下:
import java.awt.*; //导入AWT包
import javax.swing.*; //导入Swing包
public class JFrameTest extends JFrame { // 定义一个类继承JFrame类
public void CreateJFrame(String title) { // 定义一个CreateJFrame()方法
JFrame jf = new JFrame(title); // 创建一个JFrame对象
Container container = jf.getContentPane(); // 获取一个容器
JLabel jl = new JLabel("这是一个JFrame窗体"); // 创建一个JLabel标签
// 使标签上的文字居中
jl.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jl); // 将标签添加到容器中
container.setBackground(Color.white); // 设置容器的背景颜色
jf.setVisible(true); // 使窗体可见
jf.setSize(200, 150); // 设置窗体大小
// 设置窗体关闭方式
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String args[]) { // 在主方法中调用CreateJFrame()方法
new JFrameTest().CreateJFrame("创建一个JFrame窗体");
}
}
返回结果如下图:
如何让窗体不能改变大小呢?代码如下:
jf.setResizable(false);
JDialog对话框窗体
JDialog窗体是Swing组件中的对话框,他继承了AWT组件中java.awt.Dialog类
JDialog窗体的功能是从一个窗体中弹出另一个窗体,就像是在使用IE游览器是弹出的确定对话框一样,JDialog窗体实质上另一种类型的窗体,它与JFrame窗体类似,在使用时也需要调用getContentPane()方法将窗体转换为容器,然后在容器中设置窗体的特性。
在应用程序中创建JDialog窗体需要实例化JDialog类,通常使用以下几个JDialog类的构造方法:
- public JDialog():创建一个没有标题和父窗体的对话框;
- public JDialog(Frame f):创建一个指定父窗体的对话框,但该窗体没有标题;
- public JDialog(Frame f,boolean model):创建一个指定类型的对话框,并指定父窗体,但该窗体没有指定标题,如果model为true,则弹出对话框之后,用户无法操作父窗体
- public JDialog(Frame f,String title):创建一个指定标题和父窗体的对话框;
- public JDialog(Frame f,String title,Boolean model):创建一个指定标题、窗体和模式的对话框;
下面来看一个实例,该实例主要实现单击JFrame窗体中的按钮后,弹出一个对话框窗体,代码如下:
import java.awt.Color;
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;
import javax.swing.WindowConstants;
class MyJDialog extends JDialog { // 创建自定义对话框类,并继承JDialog类
public MyJDialog(MyFrame frame) {
// 实例化一个JDialog类对象,指定对话框的父窗体、窗体标题和类型
super(frame, "第一个JDialog窗体", true);
Container container = getContentPane(); // 创建一个容器
container.add(new JLabel("这是一个对话框")); // 在容器中添加标签
setBounds(120, 120, 100, 100); // 设置对话框窗体在桌面显示的坐标和大小
}
}
public class MyFrame extends JFrame { // 创建父窗体类
public MyFrame() {
Container container = getContentPane(); // 获得窗体容器
container.setLayout(null); // 容器使用null布局
JButton bl = new JButton("弹出对话框"); // 定义一个按钮
bl.setBounds(10, 10, 100, 21); // 定义按钮在容器中的坐标和大小
bl.addActionListener(new ActionListener() { // 为按钮添加点击事件
public void actionPerformed(ActionEvent e) {
// 创建MyJDialo对话框
MyJDialog dialog = new MyJDialog(MyFrame.this);
dialog.setVisible(true); // 使MyJDialog窗体可见
}
});
container.add(bl); // 将按钮添加到容器中
container.setBackground(Color.WHITE); // 容器背景色为白色
setSize(200, 200); // 窗口大小
// 窗口关闭后结束程序
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true); // 使窗口可见
}
public static void main(String args[]) {
new MyFrame(); // 实例化MyFrame类对象
}
}
返回结果:
在上面代码中,MyJDialog类继承了JDialog类,所以可以在构造方法中使用super关键字调用JDialog类的构造方法,在这里使用了public JDialog(Frame f,String title,Boolean model)这种形式的构造放,相应地设置了自定义对话框的标题和窗体类型
更多推荐
所有评论(0)