网络编程GUI:

来源:互联网 发布:淘宝哪家iphone 编辑:程序博客网 时间:2024/06/06 20:55
网络编程
GUI::(图形用户界面)
java.Awt包:Abstract Window Toolkit,即抽象窗口工具包。要调用本地系统方法实现功能,属重量级控件。
javax.Swing包:在AWT的基础上建立的一套图形界面系统,其中提供了更多的组件,且完全由java实现,增强了移植性,属轻量级控件。
关系图

这里写图片描述

创布局


FlowLayout:流式布局管理器。从左向右排列,是Panel默认的布局管理器
BorderLayout:边界式布局管理器,东南西北中的排列方式,是Frame的默认布局管理器。如果窗体中只有一个组件,将会覆盖整个窗体。
GridLayout:网格式布局管理器,规则的矩阵
CardLayout:卡片式布局管理器,即选项卡
GridBayLayout:网格包布局管理器,非规则矩阵


建图形化界面:
1,创建frame窗体。
2,对窗体进行基本设置。
比如大小,位置,布局。
3,定义组件。
4,将组件通过窗体的add方法添加到窗体中。
5,让窗体显示,通过setVisible(true)


class  AwtDemo
{
public static void main(String[] args) 
{
Frame f = new Frame("my awt");//创建窗体
f.setSize(500,400);//长.宽
//f.setBounds(300,100,600,500);//移动组件并调整大小
f.setLocation(300,200);//设置本地位置(横坐标,纵坐标)
f.setLayout(new FlowLayout());//布局--流是布局




Button b = new Button("我是一个按钮");创建按钮

f.add(b);添加按钮




f.addWindowListener(new WindowAdapter()//监听事件,同时应用了匿名内部类
{
public void windowClosing(WindowEvent e)//关闭方法
{
System.out.println("我关");
System.exit(0);
}
public void windowActivated(WindowEvent e) 
{
System.out.println("我活了。");


}

public void windowOpened(WindowEvent e) 
{
System.out.println("我被打开了,hahahhahah");
}


});//可以封装成一个窗体的时间







f.setVisible(true);//窗体显示


//System.out.println("Hello World!");
}
}


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




事件源:就是awt包或者swing包中的那些图形界面组件。

事件:每一个事件源都有自己特有的对应事件和共性事件。


监听器:将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中。


以上三者,在java中都已经定义好了。
直接获取其对象来用就可以了。


我们要做的事情是,就是对产生的动作进行处理。
package myGUI;


import java.awt.*;
import java.awt.event.*;


/**
 * GUI的简单练习
 * @author Qihuan
 *
 */
public class GuiPractice {


    //定义该图形中所需的组件的引用
    private Frame f;
    private Button b1;
    private Button b2;
    private TextField tf;
    private TextArea ta;


    //构造函数
    GuiPractice(){
        init();
    }


    //初始化图形界面
    public void init(){
        //建立窗体对象
        f = new Frame("Hello");
        //设置窗体位置,大小
        f.setBounds(200, 200, 300, 250);
        //设置排列方式
        f.setLayout(new FlowLayout());


        //建立组件对象
        b1 = new Button("Quit");
        b2 = new Button("Enter");
        tf = new TextField(22);
        ta = new TextArea(10,36);


        //将组件添加到窗体当中
        f.add(tf);
        f.add(b2);
        f.add(b1);
        f.add(ta);


        //加载窗体上的事件
        myEvent();


        //设置窗体可见
        f.setVisible(true);
    }


    //事件
    public void myEvent(){


        //设置窗体事件
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });


        //设置按钮事件,按钮功能:退出
        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });


        //给b2添加一个鼠标监听器
        b2.addMouseListener(new MouseAdapter(){
            public void mouseClicked(MouseEvent e){
                String text = tf.getText();
                ta.setText(text);
                tf.setText("");
            }
        });


        //给窗体添加一个键盘监听器,按ESC键,关闭窗口
        b1.addKeyListener(new KeyAdapter(){
            public void keyPressed(KeyEvent e){
                if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
                    System.exit(0);
                }
            }
        });


        //给TextFiled添加一个键盘监听器,用于接受数字
        tf.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e){
                int code = e.getKeyCode();
                if(code<KeyEvent.VK_0 || code>KeyEvent.VK_9){
                    e.consume();
                }
            }
        });


        //给TextArea添加一个键盘监听器,使其不能输入文字
        ta.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e){
                e.consume();
            }
        });
    }


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


}










Menu:菜单,继承MenuItem;有右三角的图标存在,可添加Menu和MenuItem
MenuBar:菜单栏,可添加菜单和菜单条目。一般先创建菜单栏,再创建菜单。
MenuItem:菜单条目,也称菜单项,无右三角的图标存在,是最终的菜单项。
菜单的事件处理和组件一样,可以对类型为MenuItem和Menu的对象这个事件源添加活动监听ActionListener,并进行相关的事件处理。
通过setMenuBar()方法,将菜单添加到Frame中。




package myGUI;//带包编译有特殊方法-->javac -d d:\java FileList.java///jar -cvf 创建jar




//Main-Class: myGUI.FileList(回车)


import java.io.*;
import java.awt.*;
import java.awt.event.*;


/**
 * 文件目录列表(GUI)
 * @author Qihuan
 *
 */
public class FileList {


    //定义窗体
    private Frame f;
    private Button search;
    private TextField tf;
    private TextArea ta;
    private Label labAddress;


    //定义报错对话框
    private Dialog diaError;
    private Label lab2;
    private Button ok;


    //定义菜单
    private MenuBar mb;
    private Menu menuFile,menuInfo;
    private MenuItem close,info;


    //定义信息对话框
    private Dialog diaInfo;
    private Label labInfo;  


    //构造函数
    FileList(){
        init();
    }


    //初始化组件
    public void init(){
        f = new Frame("FileReader");
        f.setBounds(200,100,400,550);
        f.setLayout(new FlowLayout());


        labAddress = new Label("Address:");
        tf = new TextField(27);
        search = new Button("Search");
        ta = new TextArea(28,47);


        f.add(labAddress);
        f.add(tf);
        f.add(search);
        f.add(ta);


        diaError = new Dialog(f,"Error",true);
        diaError.setBounds(250, 200, 300, 90);
        diaError.setLayout(new FlowLayout());


        lab2 = new Label();
        ok = new Button("ok");


        diaError.add(lab2);
        diaError.add(ok);


        mb = new MenuBar();
        menuFile = new Menu("File");
        menuInfo = new Menu("help");
        close = new MenuItem("Close");
        info = new MenuItem("Info");
        diaInfo = new Dialog(f,"Info",false);
        labInfo = new Label("Qihuan : Are you OK?");


        diaInfo.setBounds(250, 200, 300, 90);


        mb.add(menuFile);
        mb.add(menuInfo);
        menuFile.add(close);
        menuInfo.add(info);
        diaInfo.add(labInfo);


        f.setMenuBar(mb);


        myEvent();


        f.setVisible(true);
    }


    private void myEvent() {


        //点击info按钮显示信息
        info.addActionListener(new ActionListener() {


            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                diaInfo.setVisible(true);
            }
        });


        //close按钮关闭
        close.addActionListener(new ActionListener() {


            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                System.exit(0);
            }
        });


        //信息对话框关闭
        diaInfo.addWindowListener(new WindowAdapter() {


            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                diaInfo.setVisible(false);
            }
        });


        //报错对话框关闭(X)
        diaError.addWindowListener(new WindowAdapter() {


            @Override
            public void windowClosing(WindowEvent e) {
                // TODO Auto-generated method stub
                diaError.setVisible(false);
            }
        });


        //报错对话框关闭(ok按钮)
        ok.addActionListener(new ActionListener() {


            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                diaError.setVisible(false);
            }
        });


        //窗口关闭(X)
        f.addWindowListener(new WindowAdapter() {


            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });


        //输入信息后回车出结果
        tf.addKeyListener(new KeyAdapter() {


            @Override
            public void keyPressed(KeyEvent e) {
                // TODO Auto-generated method stub
                if(e.getKeyCode() == KeyEvent.VK_ENTER)
                    showDir();
            }
        });


        //按钮
        search.addActionListener(new ActionListener() {


            public void actionPerformed(ActionEvent e) {
                showDir();
            }
        });


        //TextArea区域不能输入文本
        ta.addKeyListener(new KeyAdapter() {


            @Override
            public void keyTyped(KeyEvent e) {
                // TODO Auto-generated method stub
                e.consume();
            }
        });
    }


    //显示文件路径功能
    private void showDir(){
        String dirPath = tf.getText();


        File dir = new File(dirPath);


        if(dir.exists() && dir.isDirectory()){


            ta.setText(null);


            String[] names = dir.list();


            for (String name : names) {
                ta.append(name+"\r\n");
            }
        } else {
            diaError.setVisible(true);
            lab2.setText("Not found:"+dirPath);
        }
    }




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