Java窗体阻塞功能的实现

在用户界面弹出一个对话框时,阻塞对旧窗体的操作。
首先创建一个对话框。

public class Study2 extends JDialog {
    
    

	public Study2() {
    
    

		Container c = getContentPane();// 获取窗体容器
		c.add(new JLabel("这是一个对话框"));
		setBounds(100, 100, 100, 100);// 设置坐标和大小
		setVisible(true);// 设置窗体可见
	}

这个类要继承Dialog类,然后进行常规设置,设置大小,位置,可见,这样就完成了一个对话框的创建。
在这里插入图片描述
然后创建一个父窗体,添加按钮,添加监听。

public class Study2 extends JDialog {
    
    

	public Study2(JFrame frame) {
    
    

		Container c = getContentPane();// 获取窗体容器
		c.add(new JLabel("这是一个对话框"));
		setBounds(100, 100, 100, 100);// 设置坐标和大小
	}

	public static void main(String[] args) {
    
    
		final JFrame j = new JFrame("父窗体");//创建一个父窗体
		j.setBounds(50, 50, 300, 300);// 设置坐标和大小
		Container c = j.getContentPane();// 获取窗体容器
		c.setLayout(new FlowLayout());// 设置为流布局
		JButton btu = new JButton("弹出一个对话框");//创建一个按钮
		c.add(btu);
		j.setVisible(true);// 设置窗体可见
		btu.addActionListener(new ActionListener() {
    
    
			// 添加监听
			public void actionPerformed(ActionEvent e) {
    
    
				Study2 s = new Study2(j);
				s.setVisible(true);// 设置可见
			}
		});

	}

}

这时候已经能够正常运行了,不过弹出对话框还是可以对父窗体进行操作。
在这里插入图片描述
不断点击,就不断的弹出对话框。
只需要在第一个创建对话框的地方添加一个返回父类的方法super。

public Study2(JFrame frame) {
    
    
		// 第一个参数为父窗体对象,第二个参数为对话框标题,第三个参数为是否阻塞窗体
		super(frame,"对话框标题",true);

		Container c = getContentPane();// 获取窗体容器
		c.add(new JLabel("这是一个对话框"));
		setBounds(100, 100, 100, 100);// 设置坐标和大小
	}

第三个参数设置为true时,就为阻塞,无法对父窗体进行操作,如果为false,则不阻塞。
在这里插入图片描述
无法点击。
完整代码:

package study.czm;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Study2 extends JDialog {
    
    

	public Study2(JFrame frame) {
    
    
		// 第一个参数为父窗体对象,第二个参数为对话框标题,第三个参数为是否阻塞窗体
		super(frame,"对话框标题",true);

		Container c = getContentPane();// 获取窗体容器
		c.add(new JLabel("这是一个对话框"));
		setBounds(100, 100, 100, 100);// 设置坐标和大小
	}

	public static void main(String[] args) {
    
    
		final JFrame j = new JFrame("父窗体");//创建一个父窗体
		j.setBounds(50, 50, 300, 300);// 设置坐标和大小
		Container c = j.getContentPane();// 获取窗体容器
		c.setLayout(new FlowLayout());// 设置为流布局
		JButton btu = new JButton("弹出一个对话框");//创建一个按钮
		c.add(btu);
		j.setVisible(true);// 设置窗体可见
		btu.addActionListener(new ActionListener() {
    
    
			// 添加监听
			public void actionPerformed(ActionEvent e) {
    
    
				Study2 s = new Study2(j);
				s.setVisible(true);// 设置可见
			}
		});

	}

}

猜你喜欢

转载自blog.csdn.net/javanofa/article/details/102723965
今日推荐