黑马程序员_Java_GUI

本文介绍Java GUI编程的基础知识,包括AWT和Swing组件的使用,以及如何通过事件监听机制实现文件的打开、保存等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

---------------------------------------------- android培训、java培训、期待与您交流! -----------------

 

Java GUI是Java的图形化表现方式。

 

GUI有两个组件:AWT和Swing

    AWT:抽象窗口工具包,需要调用本地系统方法实现功能,属重量级空间;


    Swing:在AWT的基础上,简历的一套图形界面系统,其中提供了更多组件,而且完全

           由Java实现,增强了可移植性,属于轻量级控件;


 

 

------------------------------------------------------------------------------                         

GUI布局:常见的布局管理器有:FllowLayout(流式):从左到右(Panel默认流式)

                             BorderLayout(边界):东南西北中(Frame默认边界)

                             GridLayout(网格):规则矩阵

                             GraidBaglayout(网格包):非规则矩阵           

每次点击组件都会产生一个相应的效果,需要监听机制监听事件是否发生,并作出相应的处理动作。

事件监听机制组成:事件源(组件)

                  事件(Event)

                  监听器(Listener)

                  事件处理(引发事件后处理方式)

--------------------------------------------------------------------------------

下面创建一个窗口,具备加载文件,书写文件,保存文件的功能,并具有关闭功能!

 

import java.awt.*;

import java.awt.event.*;

import java.io.*;

 

class MyMenuWithSave{

    private Framef;    //创建一个Frame引用

    privateMenuBar bar; //创建一个菜单条引用

    privateTextArea ta; //创建一个文本区域引用

    private MenufileMenu;//创建一个菜单引用

    private MenuItemopenItem,saveItem,closeItem;//创建三个子菜单

 

    privateFileDialog openDia,saveDia;  //创建两文本对话框引用,分别用来打开和保存文件

 

    private Filefile;  //创建一个文件引用,用于保存写好的文件

 

    MyMenuWithSave()    {

        init();  //初始化菜单

    }

 

    publicvoid  init() { //初始化方法

        f = newFrame("my window");  //创建一个Frame实例对象并命名

        f.setBounds(300,100,500,600);  //设置Frame的位置,分别为距离屏幕的左边距离,距离屏幕的上边距离,Frame的长和宽

        //f.setLayout(newFlowLayout());

 

        bar = newMenuBar(); //创建一个菜单条实例

        ta = newTextArea();//创建一个文本区实例

        fileMenu= new Menu("文件");  //创建一个菜单实例并命名

        openItem= new  MenuItem("打开");  //创建一个子菜单实例并命名

        saveItem= new  MenuItem("保存");  //创建一个子菜单实例并命名

        closeItem= new MenuItem("退出");//创建一个子菜单实例并命名

 

        fileMenu.add(openItem);//将创建好的子菜单添加到菜单中去

        fileMenu.add(saveItem);

        fileMenu.add(closeItem);

        bar.add(fileMenu);  //将菜单添加到菜单条

 

        f.setMenuBar(bar);//将菜单条添加到Frame中

        openDia =new FileDialog(f,"我要打开",FileDialog.LOAD); //创建文本对话框实例对象并命名,调用相应的方法

        saveDia =new FileDialog(f,"我要保存",FileDialog.SAVE);

 

        f.add(ta);//将文本区添加到框架

 

        myEvent();//调用对应的监听机制

 

        f.setVisible(true);//设置框架可见

    }

 

    private voidmyEvent()  {

        saveItem.addActionListener(newActionListener() {   //保存文件的动作监听器,

                                                    publicvoid actionPerformed(ActionEvent e){

                                                        if(file==null){

                                                            saveDia.setVisible(true);//设置保存对话框可见

 

                                                            StringdirPath = saveDia.getDirectory(); //设置中保存的路径

                                                            StringfileName = saveDia.getFile();    //设置保存的文件名

                                                            if(dirPath==null|| fileName==null)   //判断文件名和保存路径方是否为空

                                                                return;

 

                                                            file= new File(dirPath,fileName); //不为空,创建文件实例

                                                        }

 

                                                        try{                                                       

                                                            BufferedWriterbufw = new BufferedWriter(new FileWriter(file));

 

                                                            Stringtext = ta.getText();

 

                                                            bufw.write(text);

                                                            //bufw.flush();

                                                            bufw.close();

                                                        }catch(IOException e1){                                           

                                                            thrownew RuntimeException();

                                                        }

                                                       

                                                    }

                                                       

                                                });

                                                               

                    openItem.addActionListener(newActionListener(){ //打开文件的动作监听器

                                                                publicvoid actionPerformed(ActionEvent e){

                                                                    openDia.setVisible(true);//设置打开对话框可见

 

                                                                    StringdirPath = openDia.getDirectory();  //打开文件的路径

                                                                    StringfileName = openDia.getFile(); //打开文件的文件名

                                                                    System.out.println(dirPath+"...."+fileName);

                                                                    if(dirPath==null|| fileName==null)    //判断是否为空

                                                                        return;

                                                           

                                                                    file= new File(dirPath,fileName);

                                                                   

                                                                    try{

                                                                        BufferedReaderbufr = new BufferedReader(new FileReader(file)); //将打开的文件写入文本区

 

                                                                        Stringline = null;

                                                                       while((line=bufr.readLine())!= null) {

                                                                            ta.append(line+"\r\n");

                                                                        }

 

                                                                        bufr.close();

                                                                   

                                                                    }catch(IOException e1){

                                                                        thrownew RuntimeException("读取失败!");

                                                                    }

                                                                   

                                                                }

                                                             });

                                                           

        closeItem.addActionListener(newActionListener() { //菜单里的退出选项的动作监听器                                              

                                                    publicvoid actionPerformed(ActionEvent e){                                                

                                                        System.exit(0);

                                                    }

                                                 });

 

        f.addWindowListener(newWindowAdapter(){    //Frame里的退出选项的动作监听器,就是红色X键     

                                        publicvoid windowClosing(WindowEvent e){                                      

                                            System.exit(0);

                                        }

                                    });

                                           

    }

 

    public staticvoid main(String[] args)

    {

        newMyMenuWithSave();

    }

 

}

 

总结:Java的GUI需要先清楚具体的物理布局,将相应的组件逐步添加到上级组件中,在调用相应的监听器只想相应的动作!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值