Java基础--GUI

1,概述

GUI,即图形用户界面。java将这种界面封装成对象。有两个包:
java.Awt:抽象窗口工具包,要调用本地系统方法实现功能。重量级控件。
javax.Swing:在awt基础上建立的。增强了可移植性,轻量级控件。开发多用这个。

2,GUI的继承关系图

Component:
    |--Container
        |--Window
            |--Frame
            |--Dialog
                |--FileDialog
        |--Panel
    |--Button
    |--Label
    |--Checkbox
    |--TextComponent
        |--TextArea
        |--TextField
窗体的布局管理器:FlowLayout:流式布局,从左到右如果一个则居中Panel默认的布局管理器。
BorderLayout:边界式布局,东西南北中,不设置则是中间铺满。Frame的默认布局管理器。
GridLayout:网格式。
CardLayout:卡片式。
GridBayLayout:网格包布局。

3,创建一窗体

先有窗体->窗体基本设置(位置、布局。。)->定义组件并添加到窗体->显示窗体。
class AwtDemo
{
    public static void main(String[] args)
    {
        Frame f = new Frame();
        Button b = new Button("关闭");
        f.setTitle("diyici");
        f.setSize(700, 400);
        f.setLocation(500, 500);
        f.setLayout(new FlowLayout());
        f.add(b);
        f.setVisible(true);

    }
}

4,监听处理事件

事件源(图形界面组件),事件(Event),监听器(Listener),处理事件。
我们编程主要编写处理事件。
创建一菜单窗口流程:
先有Frame,在Frame中setMenuBar()加入菜单功能。
菜单中加入Menu()这是你要的菜单的名字。
菜单中加入下拉菜单MenuItem(),
菜单创建子菜单就Menu();
一个实例,窗口,有打开功能,可以打开文件并显示。这里并未写出save的功能。
package myDemo;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class  OpenDemo
{
    private Frame f;
    private MenuBar mb;
    private Menu m ;
    private MenuItem openItem, saveItem, closeItem;
    private FileDialog openDia, saveDia;
    private TextArea ta;

    OpenDemo()
    {
        init();
    }
    public void init()
    {
        f = new Frame("my demo");
        f.setBounds(300, 100, 700, 600);
        //f.setLayout(new FlowLayout());

        mb = new MenuBar();
        m = new Menu("文件");
        closeItem = new MenuItem("退出");
        openItem = new MenuItem("open");
        saveItem = new MenuItem("save");
        openDia = new FileDialog(f, "open", FileDialog.LOAD);
        saveDia = new FileDialog(f, "open", FileDialog.SAVE);
        //b = new Menu("子菜单");
        ta = new TextArea();
        f.add(ta);
        f.setMenuBar(mb);
        mb.add(m);
        //m.add(b);
        //b.add(subItem);
        m.add(openItem);
        m.add(saveItem);
        m.add(closeItem);

        //f.add(ta);
        myEvent();
        f.setVisible(true);
    }

    private void myEvent()
    {
        f.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });

        openItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                openDia.setVisible(true);
                String dirPath = openDia.getDirectory();
                String fileName = openDia.getFile();
                File file = new File(dirPath, fileName);
                //String s = null;
                //while ((s=br.readLine())!= null)
                //{
                    //ta.append(s);
                //}
                if (dirPath==null || fileName==null)
                    return ;
                ta.setText("");
                System.out.println(dirPath+"...."+fileName);

                try
                {
                    BufferedReader br = new BufferedReader(new FileReader(file));
                    String line = null;
                    while ((line=br.readLine())!=null)
                    {
                        ta.append(line+"\r\n");

                    }
                    br.close();
                }
                catch (IOException ex)
                {
                    throw new RuntimeException("shibai");
                }
            }
        });

        closeItem.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });
    }
    public static void main(String[] args) 
    {
        new OpenDemo();
    }
}

5, jar包的处理

在java文件中添加package,编译时指定目录javac -d c:\ xxx.java
在此目录下新建一个文件a.b,Main-Class: myDemo.OpenDemo空格后的是包名,跟着的是jvm需要找的入口函数的名。文件末尾要回车。固定格式。
再编译,jar -cvfm xx.jar a.b myDemo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值