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