在用户界面弹出一个对话框时,阻塞对旧窗体的操作。
首先创建一个对话框。
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);// 设置可见
}
});
}
}