黑马程序员9--GUI

来源:互联网 发布:sai软件多大 编辑:程序博客网 时间:2024/06/06 12:26

GUI

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

GUI(Graphical User Interface) 图形用户接口

常见的布局管理器:
FlowLayout(流式布局管理器)
从左到右的顺序排列。
Panel默认的布局管理器。
BorderLayout(边界布局管理器)
东,南,西,北,中
Frame默认的布局管理器。
GridLayout(网格布局管理器)
规则的矩阵
CardLayout(卡片布局管理器)
选项卡
GridBagLayout(网格包布局管理器)
非规则的矩阵

AWT中各组件继承关系图
黑马程序员--GUI - leon_hm - Leon的博客
创建图形化界面
1.创建Frame窗体
2.对窗体进行基本设置。
  比如大小,位置,布局。
3.定义组件
4.将组件通过窗体的add方法添加到窗体中
5.让窗体显示,通过setVisible(true)

事件监听机制的特点:
1.事件源
2.事件
3.监听器
4.事件处理

事件源:就是awt包或者swing包中的那些图形界面组件
事件:每一个事件源都有自己对应事件和共性事件
监听器:将可以触发某一个事件的动作(不止一个动作)都已经封装到了监听器中
以上三者在java中都已经定义好了。
直接获取其对象来用就可以了

我们要做的就是对产生的动作进行处理。

MyWindowDemo
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class  MyWindowDemo
{
    private Frame f;
    private TextField tf;
    private Button btn;
    private TextArea ta;

    private Dialog d;
    private Label lb;
    private Button OKBtn;

    MyWindowDemo()
    {
        init();
    }

    public void init()
    {
        f = new Frame("My Window");
        
        f.setBounds(200,100,600,400);
        f.setLayout(new FlowLayout());
        
        tf = new TextField(30);

        btn = new Button("转到");

        ta = new TextArea(20,70);
        
        d=new Dialog(f,"Message",true);
        d.setBounds(300,200,200,100);
        d.setLayout(new FlowLayout());
        lb = new Label();
        OKBtn = new Button("OK");
        d.add(lb);
        d.add(OKBtn);

        myEvent();

        f.add(tf);
        f.add(btn);
        f.add(ta);

        f.setVisible(true);
    }

    public void myEvent()
    {
        //给tf添加键盘事件,当按下回车键时执行showDir
        tf.addKeyListener(new KeyAdapter(){
            public void keyPressed(KeyEvent e)
            {
                if (e.getKeyCode()==KeyEvent.VK_ENTER)
                {
                    showDir();
                }
            }
        });

        //给d注册窗口事件
        d.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e)
            {
                d.setVisible(false);
            }
        });

        //给OKBtn注册点击事件
        OKBtn.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
                d.setVisible(false);
            }
        });

        //给f注册窗口事件
        f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e)
            {
                    System.exit(0);
            }
        });

        //给btn注册点击事件
        btn.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
                showDir();
            }
        });
    }

    private void showDir()
    {
        String dirName = tf.getText();
        File dir = new File(dirName); 
        System.out.println(dir.getAbsolutePath());
        System.out.println(dir.getPath());

        if (dir.exists()&&dir.isDirectory())
        {
            ta.setText("");
            String[] names = dir.list();
            for (String name:names )
            {
                ta.append(name+"\r\n");
            }
        }
        else
        {
            if (dirName.length()>0)
            {
                lb.setText("Path "+dirName+" is illegal");
                d.setVisible(true);
            }
            
        }
    }
        
    public static void main(String[] args) 
    {
        new MyWindowDemo();
    }
}


Menu Demo
import java.awt.*;
import java.awt.event.*;
class  MyMenuDemo
{
    private Frame f;
    private MenuBar mb;
    private Menu fileMenu,subMenu;
    private MenuItem exit,subItem;

    MyMenuDemo()
    {
        init();
    }

    private void init()
    {
        f=new Frame();
        f.setBounds(300,200,600,500);
        
        mb=new MenuBar();

        //菜单
        fileMenu = new Menu("文件");
        
        
        subMenu=new Menu("submenu");
        
        //菜单项
        exit = new MenuItem("exit");
        subItem = new MenuItem("subitem");

        //将菜单项添加到菜单
        subMenu.add(subItem);

        fileMenu.add(subMenu);
        fileMenu.add(exit);
        
        //将菜单添加到菜单条
        mb.add(fileMenu);

        //将菜单条添加到窗口
        f.setMenuBar(mb);

        myEvent();

        f.setVisible(true);
    }

    private void myEvent()
    {
        exit.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });

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

    public static void main(String[] args) 
    {
        new MyMenuDemo();
    }
}

0 0