java下简单GUI布局与监听

第一次学JAVA的GUI
目的:用JAVA简单模仿window下查询某个目录里面的文件(简单模仿)

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.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;

public class GUI_5_练习 {
    private Frame f;        //框架
    private TextField tf;   //文本框
    private TextArea ta;    //有多行的文本框
    private Button but;     //按钮
    private Dialog d ;      //对话框
    private Button okButton;//对话框中的按钮
    private Label lab;      //标签(给对话框加文字的)
    GUI_5_练习(){
        init();
    }
    public void init(){
        f = new Frame("My window");
        //基本设置
        f.setBounds(300,100,600,450);//设置  框架,x , y 坐标   和   长 宽
        f.setLayout(new FlowLayout());//流式布局
        tf = new TextField(50);//文本框
        ta = new TextArea(18,70);//长18  70行   的文本框  
        but = new Button("转到");//按钮

        d = new Dialog(f,"提示信息",true);//定义一个对话框,   第一个参数是关联  Frame的,第三个参数如果为true那么有Dialog对话框时,不能动Frame,False就可以动
        d.setBounds(500,300,350,100);//对话框中的位置+大小
        d.setLayout(new FlowLayout());//流式布局
        lab = new Label(); //组件里面不能直接写文本,要用标签
        okButton = new Button("  确定    ");//对话框中的按钮

        //添加组件
        f.add(tf);//添加到Frame
        f.add(but);
        f.add(ta);

        d.add(lab);//添加到Dialog
        d.add(okButton);

        //添加窗口事件
        myEvent();

        //可见
        f.setVisible(true);
    }

    private void myEvent(){
        //实现Frame框架 的关闭功能
        f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.out.println("退出");
                System.exit(0);
            }
        });
        //实现Dialog对话框的关闭功能
        d.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                d.setVisible(false);
            }
        });
        //实现Dialog对话框按键      按下时的功能(使Dialog对话框消失)。。这个是活动的,所以键盘敲入也可以
        okButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                d.setVisible(false);
            }
        });
        //设置文本框   按键功能
        tf.addKeyListener(new KeyAdapter(){
            public void keyPressed(KeyEvent e){
                if(e.getKeyCode() == e.VK_ENTER)
                    showDir();
            }
        });
        //设置 ,,按钮活动时的功能
        but.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                showDir();
            }
        });
    }
    private void showDir(){
        String dirPath = tf.getText();//获取文本内容

        File dir = new File(dirPath);//把文本内容转化为路径
        if(dir.exists() && dir.isDirectory()){//判断路径是否存在  且 有这个目录
            ta.setText("");//清空文本
            String[] names = dir.list();//获取该路径下的列表
            for(String name : names){//遍历列表
                ta.append(name+"\n");//以追加的方式写入
            }
        }
        else{//如果没有目录或输入错误
            String info = "您输入的信息有误:"+dirPath+"请重输";
            lab.setText(info);
            d.setVisible(true);
        }
        tf.setText("");//每次输入完文本框,自动清空
    }
    public static void main(String[] args) {
        new GUI_5_练习();
    }
}
/*  Window    ->    void addWindowListener(WindowListener l) 添加指定的窗口侦听器,以从此窗口接收窗口事件。
              ->    WindowListener   ->     WindowAdapter 
              ->    void windowClosing(WindowEvent e)  窗口正处在关闭过程中时调用。 

    Button    ->    void addActionListener(ActionListener l)  添加指定的动作侦听器,以接收发自此按钮的动作事件。 
              ->    ActionListener    ->    void actionPerformed(ActionEvent e)  发生操作时调用。

    Component ->    void addKeyListener(KeyListener l)   添加指定的按键侦听器,以接收发自此组件的按键事件。
              ->    KeyListener       ->    KeyAdapter
              ->    void keyPressed(KeyEvent e)    按下某个键时调用此方法。 



 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值