刘意-java基础教程(API-GUI图形界面)笔记

GUI在awt和swing包下
java.xxx 基本的、标准的java包,javax.xxx基本java扩展包
java.awt(抽象窗口工具包):需要调用本地系统方法实现功能。属重量级控件
javax.swing:在awt的基础上,建立的一套图形界面系统,其中提供了更多
                    的组件,而且完全由java实现。增强了移植性,属轻量级控件

java.awt和javax.swing的轻重量级控件不是包的轻重,而是指系统的关联性,重量级移植性差

java.awt--Component
component是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条都是组件示例

window对象是一个没有边界和菜单栏的顶层窗口。窗口的默认布局是BorderLayout
Frame是带有标题和边框的顶层窗口

组件就是一个对象,对象有变量和方法。组件就是一组相关的方法和变量的集合,相关的对象

设置窗口标题

x.setTitle();

设置窗口大小  (单位:像素)


x.setSize();  == Dimension(int width, int height)
                //构造一个Dimension,并将其初始化为指定宽度和高度
                  Dimension d=new Dimension(x,y);
                       x.setSize(d);

Dimension类封装单个对象中组件的宽度和精度(精确到整数)。该类与组件的某个属性关联

设置窗口位置


x.setLoaction(x,y); ==   Point(int x, int y)
                      //表示(x,y)坐标空间中的位置的点,以整数精度指定
                         Point p =new Point(x,y);
                             x.setLocation(p);

有的写一些小游戏可能用的Dimension和Point写的 

设置窗口可见

x.setVisible();

等于窗口位置和窗口大小

x.setBounds(x, y, width, height);

窗口关闭的机制(事件监听机制):
       A:事件源        被监听的对象或者事件发生的地方
       B:事件            就是要发生的事件   
       C:事件处理     就是针对发生的事情做出的处理方案
       D:事件监听     就是把事件源和事件关联起来

 
举例:人受伤事件
 
           事件源:人(具体的对象)
                 Person p1 = new Person("张三");
                 Person p2 = new Person("李四");
               事件:受伤
                 interface 受伤接口{
                        一拳(){};
                        一脚(){};
                     一板砖(){};  
                  }
            事件处理:
                   受伤处理类 implements 受伤接口{
                      一拳(){System.out.println("鼻子流血了,送到卫生间洗洗");};
                         一脚(){System.out.println("晕倒了,送到通风处");};
                      一板砖(){System.out.println("头破血流,送到太平间");};
           }
             事件监听:
                    p1.注册监听(受伤接口);

如果看到一个方法的参数是一个接口(处理方式):
         1、定义一个外部类,实现这个接口
         2、匿名内部类

关闭窗口
 

x.addWindowListener(new WindowListener(){
        public void windowOpened(WindowEvent e){
         }
        public void windowIconified(WindowEvent e){
         }
         public void windowDeiconified(WindowEvent e){
         }
         public void windowDeactivated(WindowEvent e){
         }
         public void windowClosing(WindowEvent e){
                 System.exit(0);
          }
          public void windowClosed(WindowEvent e){
         }
          public void windowActivated(WindowEvent e){
         }
});

适配器模式
同一个包下,连接各个类:

https://www.bilibili.com/video/av37614313?p=707
用适配器类改进关闭窗口
 

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

按钮点击事件
需求:把按钮添加到窗体,并对按钮添加一个点击事件
  A:创建窗体对象

Frame f=new Frame();

B:创建按钮对象

Button bn =new Button();

C:把按钮添加到窗体

f.setBounds(x,y,width ,height);

D:窗体显示

f.setVisible();

刘意-java基础教程(API-GUI图形界面)笔记_第1张图片

 窗口布局:窗口中组件的排列方式
       1、流式布局FlowLayout    
       2、边界布局BorderLayout(五个布局)    
       3、网格布局GridLayout
       4、网格包布局GridBagLayout
       5、卡片布局CardLayout  

设置布局

x.setLayout(new FlowLayout());

创建文本框


TextField tf = new TextFiel(int columns);
int columns=x

这里的x表示可以在文本框中创建x个字符

创建文本域

TextArea ta = new TextArea(int row,int columns);

row:行,columns:列

清空数据

x.setText("");

设置文本域

x.setText(xx);

追加和换行

x.append(+"\r\n");

获取光标

x.requestFocus();

向文本框中输入数字
在适配器中输入:
 

x.addKeyListener(new KeyAdapter(){
    public void KeyPressed(ActionEvent e){
           //先获取字符,在判断字符,取消事件
    char ch =e.getKeyChar();
     if(!(ch>='0' && ch<='9')){
         e.consume();
       }
    }
});

LayoutManager  如何布置Container类接口

做图形界面开发时,用swing包下的东西

Toolkit类是所有Abstract Window Toolkit 实际实现的抽象超类。Toolkit的子类被用于将各种组件绑定到特定本机工具实现
获取工具类对象
//public static Toolkit getDefaultToolkit();获取默认工具包

Toolkit tk = Toolkit.getDefaultToolkit();

根据路径获取图片

Image i=tk.getImage();

给窗体设置图片

jf.setIconImage();

 

一般流程:
1、创建窗体
Frame f=new Frame();

2、设置窗口大小和位置
f.setBounds(x, y, width, height);

3、设置布局
f.setLayout(new FlowLayout());

4、创建想要的组件
Xxx  x1 =new Xxx();

5、把组件添加到窗体
f.add(x1);

6、设置适配器(关闭虚拟页面)
f.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
           System.exit(0);
    }
});

7、对组件(按钮)添加事件
f.addXxxxxListener(new XxxxListener(){
    public void xxXxx(XxxxEvent e){
           程序执行···
    }
});
8、设置窗体显示(true:可视   false:不可视)
f.setVisible(true);

 

参考网站

https://www.bilibili.com/video/av37614313?p=700

你可能感兴趣的:(JAVA)