Implementação da função de bloqueio do formulário Java

Quando uma caixa de diálogo é exibida na interface do usuário, a operação do formulário antigo é bloqueada.
Primeiro crie uma caixa de diálogo.

public class Study2 extends JDialog {
    
    

	public Study2() {
    
    

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

Esta classe deve herdar a classe Dialog e, em seguida, realizar as configurações gerais, definir o tamanho, a posição e a visibilidade, para que a criação de uma caixa de diálogo seja concluída.
Insira a descrição da imagem aqui
Em seguida, crie um formulário pai, adicione botões e ouvintes.

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);// 设置可见
			}
		});

	}

}

Neste momento, ele pode ser executado normalmente, mas a caixa de diálogo pop-up ainda pode operar no formulário pai.
Insira a descrição da imagem aqui
Continue clicando, a caixa de diálogo aparecerá continuamente.
Basta adicionar um método super que retorna a classe pai ao primeiro lugar onde o diálogo foi criado.

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

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

Quando o terceiro parâmetro é definido como verdadeiro, ele é bloqueado e o formulário pai não pode ser operado. Se for falso, não é bloqueado.
Insira a descrição da imagem aqui
Incapaz de clicar.
Código completo:

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);// 设置可见
			}
		});

	}

}

Acho que você gosta

Origin blog.csdn.net/javanofa/article/details/102723965
Recomendado
Clasificación