zoukankan      html  css  js  c++  java
  • 窗口Dialog

    Dialog是窗口的意思,它是Window的子类。与frame相比,frame是我们大的窗口,而dialog便是那种弹出来和你说话的对话框。

    Dialog类的默认布局是BorderLayout

    Dialog的一种比较典型的构造器,构造方法like这样:

    Dialog(Dialog owner, String title, boolean modal)

    owner: 第一个是它的爸爸,对话框通常依赖于其他窗口,就是要有个爸爸。爸爸可以是Frame也可以是Dialog。 所以一个Frame的对话框的加入不用add,而是你在爸爸那栏填好就行。

    title:顾名思义,就是对话框的名字。

    modal:这个bool尔值是是否模式化,如果参数为true,即该对话框模式化,那么这个对话框弹出来后其他窗口都会被屏蔽掉,比如等等那个例子打开模式化对话框后你是无法点亮原Frame的。    而如果参数为flase,即该对话框非模式化,此时打开这个对话框后仍可以点亮或操作其他窗口。

    例子代码:

    import java.awt.*;
    import java.awt.event.*;
    
    public class TestDialog {
        public static void main(String[] args) {
            new TestFrame("测试").FrameLaunch();
        }
    }
    
    class TestFrame extends Frame{  //大窗口
    
        Dialog d1 = null;
        Dialog d2 = null;
        Button b1 = null;
        Button b2 = null;
    
        TestFrame(String s) {
            super(s);
        }
    
        public void FrameLaunch() {
    //对两个对话框的处理
            d1 = new Dialog(this,"模式对话框",true);
            d2 = new Dialog(this,"非模式对话框",false);
            d1.addWindowListener(new WindowMonitor());
            d2.addWindowListener(new WindowMonitor());
            d1.setBounds(20, 30, 300, 400);  
                d2.setBounds(20, 30, 300, 400);  
    
    //对两个按钮的处理
            b1 = new Button("打开模式对话框");
            b2 = new Button("打开非模式对话框");
            b1.addActionListener(new ButtonMonitor1());    
            b2.addActionListener(new ButtonMonitor2());
    
    //对那个爸爸frame的处理
            setLocation(500,500);
            add(b1);
            add(b2,BorderLayout.SOUTH);
            addWindowListener(new WindowMonitor());
            pack();//大窗口包住两个按钮
            setVisible(true);
        }
    
      
        class ButtonMonitor1 implements ActionListener {  //内部类,控制第一个窗口的弹出
            public void actionPerformed(ActionEvent e) {
                d1.setVisible(true);
            }
        }
    
        class ButtonMonitor2 implements ActionListener {
            public void actionPerformed(ActionEvent e) {  //内部类,控制第二个窗口的弹出
                d2.setVisible(true);
            }
        }
    
        class WindowMonitor extends WindowAdapter {  //内部类,窗口监听器,用来关闭窗口
            public void windowClosing(WindowEvent e) {
                e.getWindow().setVisible(false);
                if( !(e.getWindow() instanceof Dialog)) {
                    System.exit(0);
                }
            }
        }
    
    }
  • 相关阅读:
    MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
    市值TOP10,人类进化及中美坐标
    倒序切片
    对list进行切片
    Python之定义可变参数
    Python之递归函数
    Python之“可变”的tuple
    Python之创建单元素tuple
    Python中Unicode字符串
    Pycharm配置autopep8让Python代码更符合pep8规范
  • 原文地址:https://www.cnblogs.com/wangshen31/p/6946969.html
Copyright © 2011-2022 走看看