Python 官方文档:入门教程 => 点击学习
java 中编写 GUI 有两中工具包,分别为 AWT、Swing。 Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和方法。 AWT 和 Swing 都能跨平
java 中编写 GUI 有两中工具包,分别为 AWT、Swing。
Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和方法。
AWT 和 Swing 都能跨平台使用;AWT 会随着不同的系统平台,UI 样式会有所变化,Swing 则不会,设计完毕后在所有平台下样式一致。
import java.awt.*;
import javax.swing.*;
下面是一个窗口示例
import java.awt.*;
public class MyFrame extends Frame {
public MyFrame(){
super("测试");
setSize(400,200);
setVisible(true);
}
public static void Main(String args[]){
new MyFrame();
}
}
创建一个窗口,要继承 Frame
,同时会继承 Frame 中的一些方法;
Frame 中:
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 中,事件分为三个方面描述,
事件源:发生事件的对象
事件处理:委托事件处理模型
事件监听者:负责处理事件
首先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 中布局方式。
创建一个窗体,并设置流式布局
public class MyFrame extends Frame {
public MyFrame(){
super("测试");
setLayout(new FlowLayout());
}
}
继承 Frame 的窗体中,使用 setLayout方法 可以设置布局。
如图是 GUI 控件中常用的控件关系继承图。
组件分为容器(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):将字符串插入到文本域的指定位置
文本框有两个常用事件
在文本框按回车键时引发
注册:addActionListener()
接口:ActionListener
方法:public void actionPerformed(ActionEvent e)
对文本输入部件数据更改操作 (添加、修改、删除)
注册:addTextListener()
接口:TextListener
方法:public void textValueChanged(TextEvent e)
到此这篇关于Java中GUI工具包AWT和Swing用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网
--结束END--
本文标题: Java中GUI工具包AWT和Swing用法介绍
本文链接: https://www.lsjlt.com/news/163519.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0