Java中GUI工具包AWT和Swing用法介绍

作者:痴者工良 时间:2022-02-06 09:02:35 

java 中编写 GUI 有两中工具包,分别为 AWT、Swing。

Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和方法。

AWT 和 Swing 都能跨平台使用;AWT 会随着不同的系统平台,UI 样式会有所变化,Swing 则不会,设计完毕后在所有平台下样式一致。

import java.awt.*;
import javax.swing.*;

一个 awt 示例

下面是一个窗口示例

import java.awt.*;
public class MyFrame extends Frame {
   public  MyFrame(){
       super("测试");
       setSize(400,200);
       setVisible(true);
   }
   public  static  void Main(String args[]){
       new MyFrame();
   }
}

Java中GUI工具包AWT和Swing用法介绍

创建一个窗口,要继承 Frame,同时会继承 Frame 中的一些方法;

Frame 中:

  • super 方法可以设置窗口标题;

  • setSize 设置窗口大小,(width,hight)

  • setVisible 设置是否显示窗口,true 显示,false 隐藏

setLayout(new FlowLayout());用于设置窗口布局;

add(组件); 用于向窗口添加组件,例如按钮等。

我们来向窗口添加组件

import java.awt.*;
public class MyFrame extends Frame {
   public  MyFrame(){
       super("测试");

setLayout(new FlowLayout());

Button btn=new Button("Button");
       Font f=new Font("宋体",Font.BOLD,28);
       btn.setFont(f);
       add(btn);

setSize(400,200);
       setVisible(true);
   }

在 main 方法中启动窗口

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

效果

Java中GUI工具包AWT和Swing用法介绍

事件

java 中,事件分为三个方面描述,

事件源:发生事件的对象

事件处理:委托事件处理模型

事件监听者:负责处理事件

Java中GUI工具包AWT和Swing用法介绍

首先B监听A,设置监听的内容,并设置响应内容。

一旦A本身的状态改变,就触发C;

C执行D

妈妈跟儿子说,你作业做完了,妈妈就让爸爸就给你削个苹果吃。

妈妈:事件监控者

儿子:事件源

动作:做完作业

事件:爸爸削个苹果给儿子

妈妈监控儿子,监控是否完成作业。设置作业完成后,触发事件:削苹果;

儿子做完作业,状态变更,触发事件;事件开始执行。

简单来说 B 告诉 A ,如果 A 怎么样了,就去做一件事情C。

实现事件流程

我们继续利用上面的窗口,实现按钮点击时,改变窗口背景颜色。

实现一个事件

引入

import java.awt.event.ActionListener;

实现接口

class  Test implements  ActionListener{  
   public void actionPerformed(ActionEvent actionEvent) {
       System.out.println("执行工作");
   }

将事件注册到控件上

package com.company;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyFrame extends Frame implements ActionListener {
   public  MyFrame(){
       super("测试");

setLayout(new FlowLayout());

Button btn=new Button("Button");
       Font f=new Font("宋体",Font.BOLD,28);
       btn.setFont(f);
       btn.addActionListener(this::actionPerformed);
       add(btn);
       setSize(400,200);
       setVisible(true);
   }

public void actionPerformed(ActionEvent actionEvent) {
       System.out.println("执行工作");
       setBackground(Color.BLUE);
   }
}

按钮有个事件 * addActionListener,我们将要执行的工作 actionPerformed 绑定进去。

当条件发生时,就会触发此工作。

妈耶,我都不知道自己在说啥了。

C# 中,事件没有那么麻烦,也不需要这么BB。。。

另外, actionEvent ,有两个常用方法

actionEvent.getActionCommand();// 获取对象名称
       actionEvent.getSource()();// 获取源对象

布局

AWT 中,主要有 6 中布局方式。

  • FlowLayout 流式布局
    默认布局,控件从上到下,从左到右地排序。

  • BorderLayout 边缘布局
    自动停靠窗体边缘,并且长宽随着窗体的变化。

Java中GUI工具包AWT和Swing用法介绍

  • GridLayout 网格布局
    将容器分成若干行和若干列。

  • CradLayout 卡片布局
    像扑克牌一样,每张牌是一个控件,多个控件叠加起来,每次只能查看一个。

  • GridBagLayout 网格块布局

  • null 采用坐标定位布局

创建一个窗体,并设置流式布局

public class MyFrame extends Frame {
   public  MyFrame(){
       super("测试");
       setLayout(new FlowLayout());
}
}

继承 Frame 的窗体中,使用 setLayout方法 可以设置布局。

组件方法

如图是 GUI 控件中常用的控件关系继承图。

Java中GUI工具包AWT和Swing用法介绍

组件分为容器(Container)和控件。

容器又分为窗体(Window)和面板(Panel)。

Component 是所有组件的父类,Component 常用方法如下

Component类(抽象类)主要方法
Color getBackground() : 获取部件的背景色
Font getFont() : 获取部件的显示字体
Graphics getGraphics(): 获取部件的Graphics属性对象
void setBackground(Color c) : 设置部件的背景
void setEnabled(boolean b) : 是否让部件功能有效
void setFont(Font f) : 设置部件的显示字体
void setSize(int width,int height) : 设置部件大小
void setVisible(boolean b) : 设置部件是否可见
void setForeground(Color c) : 设置部件的前景色
Tookit getToolkit() : 取得图形部件的工具集(Toolkit)
void requestFocus() : 让部件得到焦点
void add(PopupMenu popup) :给部件加入弹出菜单

常用控件

文本

文本框(TextField)只能显示一行文本,文本域(TextArea)则可以显示、编辑多行文字。

文本框的构造函数如下

TextField():构造一个单行文本输入框。 
TextField(int):指定长度的单行文本输入框。 
TextField(String):指定初始内容的单行文本输入框。
TextField(String, int):指定长度、指定初始内容。

文本域的构造函数如下

TextArea( ):构造一个文本域。
TextArea(int, int):构造一个指定长度和宽度的文本域。 TextArea(String):构造一个显示指定文字的文本域。
TextArea(String, int, int):按指定长度、宽度和默认值构造文本域。

文本控件的常用方法有

void setEchoChar(‘*') 设置回显字符
String getText( ) :获取输入框中的数据
void setText(String s) :往输入框写入数据
boolean isEditable( ):判断输入框是否可编辑。
void select(int start,int end):选定由开始和结 束位置指定的文本。 void selectAll( ):选定所有文本。

文本域(TextArea)中,还具有以下两个常用方法

append(String s):将字符串添加到文本域的末尾
insert(String s,int index):将字符串插入到文本域的指定位置

文本框有两个常用事件

  • ActionEvent事件

在文本框按回车键时引发

注册:addActionListener()

接口:ActionListener

方法:public void actionPerformed(ActionEvent e)

  • TextEvent事件

对文本输入部件数据更改操作 (添加、修改、删除)

注册:addTextListener()

接口:TextListener

方法:public void textValueChanged(TextEvent e)

来源:https://www.cnblogs.com/whuanle/p/12539621.html

标签:Java,GUI,工具包,AWT,Swing
0
投稿

猜你喜欢

  • Java如何实现登录token令牌

    2022-05-19 16:58:11
  • 深入理解Java设计模式之外观模式

    2023-05-02 09:48:00
  • Activity透明/半透明效果的设置transparent(两种实现方法)

    2022-11-22 00:21:27
  • Java数据结构之链表详解

    2023-10-20 09:14:08
  • C#学习笔记整理_深入剖析构造函数、析构函数

    2022-10-26 18:37:20
  • SpringBoot工程搭建打包、启动jar包和war包的教程图文详解

    2022-05-04 22:09:10
  • 轻松实现Android语音识别功能

    2022-09-11 17:42:46
  • Android自定义控件实现按钮滚动选择效果

    2023-04-02 09:42:02
  • Flutter底部导航栏的实现方式

    2023-11-05 18:21:36
  • java和Spring中观察者模式的应用详解

    2023-04-21 00:16:17
  • C#实现基于XML配置MenuStrip菜单的方法

    2023-03-06 21:48:50
  • Android 获取手机信息实例详解

    2021-08-21 00:22:34
  • Java 给PDF签名时添加可信时间戳的方法

    2022-04-03 12:38:48
  • C#学习笔记- 浅谈数组复制,排序,取段,元组

    2021-10-21 00:50:58
  • SpringBoot集成gRPC微服务工程搭建实践的方法

    2022-03-11 22:10:39
  • springboot整合mybatis的超详细过程(配置模式+注解模式)

    2023-10-03 09:54:03
  • Android实现关机后数据不会丢失问题

    2021-06-08 18:54:47
  • java 高并发中volatile的实现原理

    2022-11-24 19:58:22
  • spring boot actuator监控超详细教程

    2021-06-27 01:29:36
  • Java中的CAS和ABA问题说明

    2021-08-19 11:08:18
  • asp之家 软件编程 m.aspxhome.com