---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
图形界面GUI:
GUI
Graphical User Interface(图形用户接口)。
用图形的方式,来显示计算机操作的界面,这样更方便更直观。
CLI
Command User Interface(命令行用户接口)
就是常见的Dos命令行操作。
需要记忆一些常用的命令,操作不直观。
Awt与Swing
java.Awt:Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能。 属于重量级组件。
依赖于系统。
java.Swing:在Awt基础上建立的一套图形界面系统,其中提供了更多的组件,而且完全由java实现。
增强了移植性,属轻量级实现。
Container是一个特殊的组件,虽然和其他组件平级,但是可以在该组件上添加其他的组件。
容器中的组件的排放方式,就是布局。
常见的布局管理器:
FlowLayout(流式布局管理器)从左到右的顺序排列。Panel默认的布局管理器。
BorderLayout(边界布局管理器)东,南,西,北,中,Frame默认的布局管理器。
GridLayout(网格布局管理器)规则的矩阵。
CardLayout(卡片布局管理器),选项卡。
GridBagLayout(网格包布局管理器),非规则的矩阵。
创建图形化界面:
1、创建Frame窗体。
2、对窗体进行基本设置。
3、定义组建。
4、将组建通过窗体的add方法添加到窗体中。
5、让窗体显示,通过setVisible(true)。
事件监听:
事件源:就是awt包或者swing包中的那些图形界面组建。
事件:每一个事件源都有自己特有的对应事件和共性事件。
监听器:将可以触发某一个实践的动作都已经封装到了监听器中。
窗口监听器:WindowListener
事件:ActionListener
鼠标事件:MouseListener
键盘事件:KeyListener
练习:
- class MyWindowDemo
- {
- //初始化窗口、文本区域,文本框、按钮、对话框、标签
- private Frame f;
- private TextField tf;
- private Button but;
- private TextArea ta;
- private Dialog d;
- private Label lab;
- private Button okBut;
- MyWindowDemo()
- {
- init();
- }
- //布局设置
- public void init()
- {
- f = new Frame("my window");//窗口布局
- f.setBounds(300,100,600,500);
- f.setLayout(new FlowLayout());//布局方式
- tf = new TextField(60);//文本框宽度
- but = new Button("转到");//按钮内容
- ta = new TextArea(25,70);//文本区域大小
- d = new Dialog(f,"提示信息-self",true);//对话框设置
- d.setBounds(400,200,240,150);//对话框大小位置
- d.setLayout(new FlowLayout());//对话框布局
- lab = new Label();//内容标签
- okBut = new Button("确定");
- //将组件添加进窗口和对话框
- d.add(lab);
- d.add(okBut);
- f.add(tf);
- f.add(but);
- f.add(ta);
- myEvent();
- f.setVisible(true);
- }
- /**
- * 定义事件
- */
- private void myEvent()
- {
- okBut.addActionListener(new ActionListener()//按确定按钮关闭对话框事件
- {
- public void actionPerformed(ActionEvent e)
- {
- d.setVisible(false);
- }
- });
- d.addWindowListener(new WindowAdapter()//关闭对话框按钮事件
- {
- public void windowClosing(WindowEvent e)
- {
- d.setVisible(false);
- }
- });
- tf.addKeyListener(new KeyAdapter()//回车键查询事件
- {
- public void keyPressed(KeyEvent e)
- {
- if(e.getKeyCode()==KeyEvent.VK_ENTER)
- showDir();
- }
- });
- but.addActionListener(new ActionListener()//按钮查询
- {
- public void actionPerformed(ActionEvent e)
- {
- showDir();
- }
- });
- f.addWindowListener(new WindowAdapter()//窗体关闭
- {
- public void windowClosing(WindowEvent e)
- {
- System.exit(0);
- }
- });
- }
- private void showDir()
- {
- String dirPath = tf.getText();//获取文本框内容
- File dir = new File(dirPath);//将路径封装为file对象
- if(dir.exists() && dir.isDirectory())//判断是否存在并且是一个文件夹
- {
- ta.setText("");
- String[] names = dir.list();
- for(String name : names)
- {
- ta.append(name+"\r\n");
- }
- }
- else
- {
- String info = "您输入的信息:"+dirPath+"是错误的。请重输";//对话框标签内容
- lab.setText(info);
- d.setVisible(true);//显示对话框
- }
- }
- public static void main(String[] args)
- {
- new MyWindowDemo();
- }
- }
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------