Swing是用户界面类,AWT是底层机制

java执行一个函数的过程 java怎么执行gui_ide

 

一、创建JFrame框架

注:Swing组件类都以“J”开头,如 JButton,JFrame等,AWT组件不带“J"。如果Swing组件和AWT组件一起用可能会导致视觉和行为的不一致。

  现在,我们来创建一个空框架:

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * GuiDemo01
 *
 * @author wanghao
 * @create 2018-07-07 下午4:17
 **/
public class DemoGuiOne {
    public static void main(String [] args){
        // 声明窗口对象
        JFrame f = new JFrame("简单的GUI窗口");
        // 设置窗口宽高与坐标
        f.setSize(300,500);
        f.setLocation(300,500);
        // 设置布局样式
        f.setLayout(new FlowLayout());
        /**
         *
         * 布局管理器
         * 1)容器中的组件的排放方式,就是布局.
         * 2)常见的布局管理器
         *   FlowLayout(流式布局管理器)
         *     从左到右的顺序排列
         *     Panel默认的布局管理器
         *   BorderLayout(辩解布局管理器)
         *     东  南  西  北   中
         *     Frame 默认的布局管理器
         *     不指定布局方式,默认 满屏覆盖,在添加一个 也是 满屏覆盖
         *   GridLayout (网格布局管理器)
         *     规则的矩阵
         *   CardLayout  (卡片布局管理器)
         *     选项卡
         *   GridBagLayout(网格包布局管理器)
         *    非规则的矩阵

         * 事件监听机制组成
         *  事件源:
         *  事件:Event
         *  监听器:Listener
         *  时间处理:(引发事件后处理方式)
         *
         *  事件源:就是awt包或者swing包中的那些图像界面组件.
         *  事件:每个事件源都有自己特定的对应时间和共性时间.
         *  监听器:可以出发某一个事件的动作都已经封装到监听器中.
         */
        JButton jButton1 = new JButton("我是按钮1");
        JButton jButton2 = new JButton("我是按钮2");
        JButton jButton3 = new JButton("我是按钮3");
        f.add(jButton1);
        f.add(jButton2);
        f.add(jButton3);

        f.addWindowListener(new MyWindow());
        f.setVisible(true);
    }
}

/**
 * 因为接口WindowLinstener的方法被WindowAdapter实现,所以我们简介继承WindowAdapter,并复写我们需要更改的方法。
 */
class MyWindow extends WindowAdapter {
    @Override
    public void windowOpened(WindowEvent e) {
        System.out.println("窗口打开");

    }

    @Override
    public void windowClosing(WindowEvent e) {
        // 点×关闭窗口
        System.out.println("窗口关闭");
        System.exit(0);
    }

    @Override
    public void windowActivated(WindowEvent e) {
        System.out.println("窗口激活");
    }
}

运行后的样子如下:

java执行一个函数的过程 java怎么执行gui_ide_02

插入鼠标点击事件:

/* 事件监听机制组成
         *  事件源:
         *  事件:Event
         *  监听器:Listener
         *  时间处理:(引发事件后处理方式)
         *
         *  事件源:就是awt包或者swing包中的那些图像界面组件.
         *  事件:每个事件源都有自己特定的对应时间和共性时间.
         *  监听器:可以出发某一个事件的动作都已经封装到监听器中.
         */
        JButton jButton1 = new JButton("我是按钮1");
        JButton jButton2 = new JButton("我是按钮2");
        JButton jButton3 = new JButton("我是按钮3");
        jButton1.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(10);
                System.out.println("按钮干的退出");
            }
        });

插入键盘按键事件:

// 键盘和鼠标事件
        TextField textField = new TextField();
        textField.addKeyListener(new KeyAdapter() {
            /**
             * keyPressed:键盘按下,未释放
             * keyTyped:键盘按下,然后释放。
             * 对于按下键和释放键事件,getKeyCode 方法返回该事件的 keyCode。对于键入键事件,
             * getKeyCode 方法总是返回 VK_UNDEFINED。
             *
             * 所以键入键事件只能靠 getKeyChar 来区分了
             *
             *
             KeyPressed是键被按下,KeyReleased是键被弹起,这两个都是更底层一些的事件。
             KeyTypede是指有字符被输入,比如按住shift,再按A键,如果当时Caps Lock不亮,就产生一个输入大写A的事件。
             */
            @Override
            public void keyTyped(KeyEvent e) {
                super.keyTyped(e);
                System.out.println("是指字符被输入。Code:"+e.getKeyCode());
                System.out.println("是指字符被输入。Char:"+e.getKeyChar());
            }

            @Override
            public void keyPressed(KeyEvent e) {
                super.keyPressed(e);
                System.out.println("是指键被按下。Code:"+e.getKeyCode());
                System.out.println("是指键被按下。Char:"+e.getKeyChar());
            }

            @Override
            public void keyReleased(KeyEvent e) {
                super.keyReleased(e);
                System.out.println("是指键被弹起。Code:"+e.getKeyCode());
                System.out.println("是指键被弹起。Char:"+e.getKeyChar());
            }
        });
        f.add(textField);

插入自定义布局:

 

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

/**
 * 点击按钮改变颜色
 *
 * @author wanghao
 * @create 2018-07-07 下午4:57
 **/
public class ColorWindow {
    public static void main(String[] args) {
        final Frame f=new Frame("XXX");
        f.setLayout(null);
        f.setSize(500,400);
        f.setLocation(300,200);

        // 设置背景颜色 初始背景颜色黄色
        f.setBackground(new Color(255, 255, 0));


        Button red=new Button("红色");
        red.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("改变背景颜色");
                Color bgColor = new Color(255, 0, 0);
                // 更改背景颜色为红色
                f.setBackground(bgColor);
            }
        });
        Button green=new Button("绿色");
        green.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("改变背景颜色");
                Color bgColor = new Color(0, 255, 0);
                // 更改背景颜色绿色
                f.setBackground(bgColor);
            }
        });
        Button Blue=new Button("兰色");
        Blue.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("改变背景颜色");
                Color bgColor = new Color(0, 0, 255);
                // 更改背景颜色蓝色
                f.setBackground(bgColor);
            }
        });
        Button revert=new Button("还原");
        revert.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("改变背景颜色");
                Color bgColor = new Color(255, 255, 0);
                // 更改背景颜色蓝色
                f.setBackground(bgColor);
            }
        });
        Button title=new Button("设置背景颜色");
        title.setBounds(0,20,250,50);
        //设置按钮尺寸
        red.setBounds(0,70,100,50);
        green.setBounds(0,120,100,50);
        Blue.setBounds(0,170,100,50);
        revert.setBounds(0,220,100,50);
        f.add(title);
        f.add(red);
        f.add(green);
        f.add(Blue);
        f.add(revert);



        f.addWindowListener(new WindowAdapter(){
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("我关了");
                System.exit(0);
            }
        });

        f.setVisible(true);
    }
}

运行后的效果如下:

java执行一个函数的过程 java怎么执行gui_ide_03