Java 图形界面编程


简单入门

package GUI;

import java.awt.*;

/**
 * GUI:Graphical user interface
 *
 * CLI:command line user interface
 *
 * awt:abstract window toolkit 抽象窗口工具包
 *组件就是对象
 *
 */
public class Driver {
    public static void main(String[] args) {
        /**
         * 创建窗体对象
         */
        //Frame frame=new Frame();
        Frame frame=new Frame("杨钰莹");//相当于  Frame frame=new Frame();    frame.setTitle("fuck Java"); 


        /**
         * 窗体标题
         */
        //frame.setTitle("fuck Java");
        /**
         * 设置窗体大小
         */
        frame.setSize(640,480);//单位是:像素
        /**
         * 设置窗体位置
         */
        frame.setLocation(100,200);
        /**
         * 调用一个方法,设置窗体可见
         */
       // frame.show();//丢弃的方法
        frame.setVisible(true);//推荐使用的方法
        System.out.println("hello world");
    }
}

关闭窗口操作

知识储备

1.事件源:事件发生的地方
2.事件: 就是要发生的事情
3.时间处理 就是针对发生的事情做出处理方案
4.事件监听 就是把    事件源    和        事件    关联起来 


举例子:人受伤事件

事件源:人  具体的对象
            Person p1=new Person("鲁智深");
             Person p2=new Person("张飞");

  事件:受伤
            interface 受伤接口{
            一拳();
            一脚();            
            一块砖头();
    }

事件处理:
        受伤处理类 implements 受伤接口{
            一拳(){
                    print("手残废了");
            }  
         一脚(){
                print("脚断了");
            }  
         一块砖头(){
                print("砖头碎了");
            }  
}

事件监听:
        p1.注册监听(受伤接口);
        

方法 1

package GUI;

import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
 * GUI:Graphical user interface
 *
 * CLI:command line user interface
 *
 * awt:abstract window toolkit 抽象窗口工具包
 *组件就是对象
 *
 */
public class Driver {
    public static void main(String[] args) {
        /**
         * 创建窗体对象
         */
        Frame frame=new Frame("杨钰莹");
        /**
         * 设置窗体属性
         */
        frame.setBounds(100,200,640,480);
        /**
         * 让窗体关闭
         */

        //事件源
        //事件:关闭
        //事件处理:关闭窗口(System.exit(0))
        //事件监听
        frame.addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {

            }

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

            @Override
            public void windowClosed(WindowEvent e) {

            }

            @Override
            public void windowIconified(WindowEvent e) {

            }

            @Override
            public void windowDeiconified(WindowEvent e) {

            }

            @Override
            public void windowActivated(WindowEvent e) {

            }

            @Override
            public void windowDeactivated(WindowEvent e) {

            }
        });

        //设置窗体可见
        frame.setVisible(true);//推荐使用的方法
        System.out.println("hello world");
    }
}

方法2

package GUI;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
 * GUI:Graphical user interface
 *
 * CLI:command line user interface
 *
 * awt:abstract window toolkit 抽象窗口工具包
 *组件就是对象
 *
 */
public class Driver {
    public static void main(String[] args) {
        /**
         * 创建窗体对象
         */
        Frame frame=new Frame("杨钰莹");
        /**
         * 设置窗体属性
         */
        frame.setBounds(100,200,640,480);
        /**
         * 让窗体关闭
         */
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });


        //设置窗体可见
        frame.setVisible(true);//推荐使用的方法
        System.out.println("hello world");
    }
}

按钮事件小案例

package GUI;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * 需求:把 按钮 添加到窗体,并对按钮添加点击事件
 * 1.创建窗体对象
 * 2.创建按钮对象和
 * 3.把按钮添加到窗体
 * 4.窗体现实
 */
public class Driver {
    public static void main(String[] args) {
        //1.创建窗体对象
        Frame frame=new Frame("金品梅");
        //设置属性
        frame.setBounds(100,200,640,480);
        //设置布局为流式布局
        frame.setLayout(new FlowLayout());


        //2.创建按钮对象和
       Button button=new Button("ok");
      // button.setSize(20,10);
        //3.把按钮添加到窗体
        frame.add(button);

        //设置窗体关闭处理
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        //按钮添加事件
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("潘金莲");
            }
        });

        //4.窗体显示
        frame.setVisible(true);

    }
}

模仿QQ在一个文本框输入 在另一个文本框回显

package GUI;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Driver {
    public static void main(String[] args) {
        //创建窗体对象
        Frame frame=new Frame("金品梅");
        //设置属性
        frame.setBounds(100,200,640,480);
        //设置布局为流式布局
        frame.setLayout(new FlowLayout());

        //创建文本框
        TextField textField=new TextField(20);

        //创建按钮
        Button button=new Button("submit data");

        //创建文本域
        TextArea textArea=new TextArea(12,80);
        //把组建添加窗体
        frame.add(textArea);
        frame.add(textField);
        frame.add(button);

        //对按钮添加事件
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //获取文本框的值
                String tf=textField.getText().trim();
                //清空数据
                textField.setText(" ");
                //设置给文本域
               // textArea.setText(tf);
                textArea.append(tf+"\t\n");
                //获取光标
                textField.getCursor();
            }
        });


        //设置窗体关闭处理
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        //窗体显示
        frame.setVisible(true);

    }
}

鼠标移动到按钮上 (单击或)自动变色

package GUI;

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

public class Driver {
    public static void main(String[] args) {
        //创建窗体对象
        Frame frame=new Frame("金品梅");
        //设置属性
        frame.setBounds(100,200,640,480);
        //设置布局为流式布局
        frame.setLayout(new FlowLayout());
        Button redButton=new Button("red");
        Button greenButton=new Button("green");
        Button blueButton=new Button("blue");
        //Button redButton=new Button("red");


        frame.add(redButton);
        frame.add(greenButton);
        frame.add(blueButton);

        //对按钮添加动作事件 方法1
        /*redButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.setBackground(Color.RED);
            }
        });
*/
        //对按钮添加鼠标点击事件  方法2
/*        redButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                frame.setBackground(Color.RED);
            }
        });*/
        //对按钮添加鼠标进入事件  方法3
        redButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                frame.setBackground(Color.RED);
            }
        });
        redButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseExited(MouseEvent e) {
                frame.setBackground(Color.orange);
            }
        });


        greenButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                frame.setBackground(Color.GREEN);
            }
        });
        greenButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseExited(MouseEvent e) {
                frame.setBackground(Color.orange);
            }
        });

        blueButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                frame.setBackground(Color.BLUE);
            }
        });
        blueButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseExited(MouseEvent e) {
                frame.setBackground(Color.orange);
            }
        });


        //设置窗体关闭处理
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        //窗体显示
        frame.setVisible(true);

    }
}

(多级)菜单

package GUI;

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

/**
 * 你输入的如果是非数字 字符,就取消你键盘录入的效果
 */
public class Driver {
    public static void main(String[] args) {
        //创建窗体对象
        Frame frame=new Frame("金品梅");
        //设置属性
        frame.setBounds(100,200,640,480);
        //设置布局为流式布局
        frame.setLayout(new FlowLayout());
        //创建菜单栏
        MenuBar menuBar=new MenuBar();
        //创建菜单
        Menu menu1=new Menu("file");
        Menu menu2=new Menu("open");

        //创建菜单项
        MenuItem menuItem1=new MenuItem("moives");
        MenuItem menuItem2=new MenuItem("pictures");
        MenuItem menuItem3=new MenuItem("books");
        MenuItem menuItem4=new MenuItem("text");
        MenuItem menuItem5=new MenuItem("exit system");

        //谁添加谁
        /*menu1.add(menuItem);
        menuBar.add(menu1);*/
        /**
         * 多级菜单
         */
        menu2.add(menuItem1);
        menu2.add(menuItem2);
        menu2.add(menuItem3);
        menu2.add(menuItem4);

        menu1.add(menu2);
        menu1.add(menuItem5);

        menuBar.add(menu1);

        //设置菜单栏
        frame.setMenuBar(menuBar);

        /**
         * 一级菜单
         */
        //添加菜单项监听
        menuItem1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.setTitle(menuItem1.getLabel());
            }
        });
        menuItem2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.setTitle(menuItem2.getLabel());
            }
        });
        menuItem3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.setTitle(menuItem3.getLabel());
            }
        });
        menuItem4.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Runtime runtime=Runtime.getRuntime();
                try {
                    runtime.exec("notepad");
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        });
        menuItem5.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });




        //设置窗体关闭处理
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        //窗体显示
        frame.setVisible(true);

    }
}


优质内容筛选与推荐>>
1、ASP.NET MVC Bundles 用法和说明(打包javascript和css)
2、HDOJ 1217 Arbitrage(拟最短路,floyd算法)
3、web安全:HTTPS
4、高精度_百炼_浮点数加法 2738 (Python)
5、操作系统原理3——多道程序


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号