zoukankan      html  css  js  c++  java
  • [javaSE] GUI(对话框Dialog)

    对话框不能单独存在,依赖于窗体,有显示标题,有模式

    获取Dialog对象,new出来,构造参数:Frame对象,String的标题,模式

    窗体内部的内容,Label对象,Button对象,调用Dialog对象的add()方法,把这两个添加进去

    Dialog也是一个普通的窗体,需要设置尺寸和位置

    这个Dialog窗体不用加入到Frame窗体中,只需要设置是否显示就可以了

    对话框的叉号,给对话框添加窗体事件

    调用Dialog对象的addWindowListener()方法,设置,重写windowClosing()方法,方法里面调用Dialog对象setVisible(flase),隐藏掉

    显示信息

    调用Label对象的setText()方法,设置文本

    import java.awt.Button;
    import java.awt.Dialog;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.Label;
    import java.awt.TextArea;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.File;
    
    public class FrameDemo {
        private Frame frame;
        private TextField tf;
        private TextArea ta;
        private Button button;
    
        private Dialog dialog;
        private Label label;
        public FrameDemo() {
            init();
        }
    
        /**
         * 初始化
         */
        public void init() {
            frame = new Frame("测试窗体");
            frame.setBounds(300, 200, 300, 400);
            frame.setLayout(new FlowLayout());
    
            tf = new TextField(20);
            button = new Button("转到");
            ta = new TextArea(30, 30);
            frame.add(button);
            frame.add(tf);
            frame.add(ta);
            
            
            dialog=new Dialog(frame, "警告", false);
            dialog.setBounds(250, 100, 200, 100);
            dialog.setLayout(new FlowLayout());
            label=new Label();
            dialog.add(label);
            
            
            frame.setVisible(true);
    
    
            
            addEventAction();
        }
    
        /**
         * 添加事件
         */
        public void addEventAction() {
            // 退出
            frame.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            //对话框的window事件
            dialog.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    dialog.setVisible(false);
                }
            });
            // action事件
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String dirName = tf.getText();
                    File file = new File(dirName);
    
                    if (!file.isDirectory() || !file.exists()) {
                        dialog.setVisible(true);
                        label.setText(dirName+"目录不存在");
                        ta.setText("目录不存在");
                        return;
                    }
    
                    String[] files = file.list();
                    StringBuilder sb = new StringBuilder();
                    for (String name : files) {
                        sb.append(name);
                        sb.append("
    ");
                    }
                    ta.setText(sb.toString());
                }
            });
        }
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            new FrameDemo();
        }
    
    }

  • 相关阅读:
    一些误解和错误的看法
    负载均衡了解
    《网络编程》守护进程
    Cocos2d-x 3.2编译Android程序错误的解决方案
    ArcMap合并之路 -- 该段路合并成一个完整的路
    让你提前知道软件开发(24):C语言和主要特征的历史
    Java中的TCP/UDP网络通信编程
    Android中Socket大文件断点上传
    android 自定义progressDialog实现
    开发Mhealth(即:Mobile Health 移动医疗)应用必知的10个掘金点
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5585734.html
Copyright © 2011-2022 走看看