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);
                }
            }
        }
    
    }
  • 相关阅读:
    [Android学习系列11]关于Android数据存储的一些事
    [PHP系列1]session和cookie的一些事
    [Android学习系列10]关于Task,Activity,BackStack的一些事
    [Android学习系列9]关于Fragment的一些事
    [Android学习系列8]数据库ormlite笔记
    [Android学习系列7]数据库学习笔记
    JAVA与C++对比 --– 虚函数、抽象函数、抽象类、接口
    iOS常用控件尺寸大集合
    ios 几种快速写法
    一些好的IOS blog 不断增加中。。。。
  • 原文地址:https://www.cnblogs.com/wangshen31/p/6946969.html
Copyright © 2011-2022 走看看