AWT中常用组件
- 前言
- 一、基本组件
- 组件名
- 标签(Label类)
- Label类的构造方法
- 注意要点
- 按钮(Button)
- Button的构造方法
- 注意要点
- 文本框(TextField)
- TextField类的构造方法
- 注意要点
- 文本域(TextArea)
- TextArea 的构造方法
- 参数scrollbars的静态常量值
- 复选框(Checkbox)
- Checkbox类的构造方法
- 单选按钮组的实现(结合使用CheckboxGroup类)
- 下拉列表(Choice)
- Choice类的常用成员方法
- 列表(List)
- List的常用成员方法
- 代码示例
- 二、对话框Dialog
- 简介
- 注意事项
- 方法名称
- 代码示例1
- 代码示例2
- 三、FileDialog
- 简介
- 方法名称
- 代码示例
前言
推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
https://www.captainbed.cn/f1
AWT中常用组件包括多种界面元素,用于构建图形用户界面。这些组件提供了丰富的交互功能,使得开发者能够创建出功能强大的应用程序。通过合理选择和组合这些组件,开发者能够设计出符合用户需求的界面,提升用户体验。
一、基本组件
组件名
组件名 | 功能 |
---|---|
Button | Button |
Canvas | 用于绘图的画布 |
Checkbox | 复选框组件(也可当做单选框组件使用) |
CheckboxGroup | 用于将多个Checkbox 组件组合成一组, 一组 Checkbox 组件将只有一个可以 被选中 , 即全部变成单选框组件 |
Choice | 下拉选择框 |
Frame | 窗口 , 在 GUI 程序里通过该类创建窗口 |
Label | 标签类,用于放置提示性文本 |
List | JU表框组件,可以添加多项条目 |
Panel | 不能单独存在基本容器类,必须放到其他容器中 |
Scrollbar | 滑动条组件。如果需要用户输入位于某个范围的值 , 就可以使用滑动条组件 ,比如调 色板中设置 RGB 的三个值所用的滑动条。当创建一个滑动条时,必须指定它的方向、初始值、 滑块的大小、最小值和最大值。 |
ScrollPane | 带水平及垂直滚动条的容器组件 |
TextArea | 多行文本域 |
TextField | 单行文本框 |
这些 AWT 组件的用法比较简单,可以查阅 API 文档来获取它们各自的构方法、成员方法等详细信息。
标签(Label类)
标签是 GUI 程序中的常用组件,显示一行文本作为提示信息,起到说明的作用。通常,是不可编辑的;在AWT 的Label 类实例化标签对象时,可通过构造方法的参数赋值指定标签上文本的对齐方式。Label类的构造方法如表所示。
Label类的构造方法
构造方法 | 描述 |
---|---|
Label() | 实例化空标签对象 |
Label(String text) | 使用指定的文本字符串实例化标签对象,其文本对齐方式为左对齐 |
Label(String text, int alignment) | 实例化一个显示指定的文本字符串的新标签对象,其文本对齐方式为指定的方式 |
Label 对象不仅可在实例化时,指定文本对齐方式,还可在此后调用成员方法setAlignment(int alignment)
进行设置。它们的参数 alignment
是用于指定对齐方式的 int
型数据,在 Label 中为其定义了3个静态常量:Label.LEFT
表示左对齐(int
值 0), Label.CENTER
表示居中对齐(int
值1),Label RIGHT
表示右对齐(int值 2)。
注意要点
setBackground(Color.red);
设置背景颜色setText("");
修改标签setAlignment(Label.CENTER);
修改对齐方式
按钮(Button)
按钮是 GUI程序中的常用组件,用于触发特定动作,从而实现人机交互。通常,一个按钮对应着一种特定的操作,如确定、保存、取消等,从而用户可以用鼠标单击它来控制程序运行的流程。AWT的Button 类实例化按钮对象,该类的构造方法进行了两次重载。Button类的构造方法见表。
Button的构造方法
构造方法 | 描述 |
---|---|
Button() | 实例化一个标签字符串为空的按钮 |
Button(String label) | 实例化一个带指定标签的按钮。 |
注意要点
setLabel()
设置文本标签setActionCommand(String command)
为激发事件设置名称- 程序中调用了 Button的成员方法
setLabel()
和setActionCommand()
, 注意二者的区别:与它们互逆操作的成员方法是getLabel()
和getActionCommand()
文本框(TextField)
文本框是 GUI 程序中的常用组件,用来显示或编辑一行文本。在 AWT 中,由类TextField 实例化文本框对象,该类继承自 TextComponent 类。TextField 类的构造方法有4种重载形式,通过给参数赋值,可以设置文本框中的初始文本字符,以及文本框的列数。TextField类的构造方法见表。
TextField类的构造方法
构造方法 | 描述 |
---|---|
TextField() | 实例化无内容的文本框对象 |
TextField(int columns) | 实例化文本框对象,指定列数 |
TextField(String text) | 实例化文本框对象,指定初始化文本 |
TextField(String text, int columns) | 实例化文本框对象,指定初始化文本、列数 |
注意要点
TexField 对象常用的成员方法与文本内容的设置与获取有关,分别是 setText()
和getText()
。如果把文本框设计为密码框,则调用成员方法 setEchoChar()
设置回显字符,成员方法 getEchoChar()
获取回显字符。
文本域(TextArea)
文本域类 TextArea 与 TextField 一样,都是文本编辑组件,同属 TextComponent的子类,只是文本域可以显示多行多列的文本。TextArea类的构造方法有5 种重载形式,通过参数赋值,不但可以像 TextField 一样指定初始化文本内容、列数,而且可以指定文本域的行数、垂直滚动条的显示。TextArea 的构造方法见表。
TextArea 的构造方法
构造方法 | 描述 |
---|---|
TextArea() | 实例化无内容的文本域对象 |
TextArea(int rows, int columns) | 实例化文本域对象,指定行数和列数 |
TextArea(String text) | 实例化具有指定文本的文本域对象 |
TextArea(String text, int rows, int columns) | 实例化文本域对象,指定初始文本内容、数和列数 |
TextArea(String text, int rows, int columns, intscrollbars) | 实例化文本域对象,指定文本、行数、列数和滚动条可见性 |
在类 TextArea 中为参数 scrollbars
定义了相应的静态常量。文本域中的文本并不能自动换行,可以通过为参数 scrollbars 赋值TextArea.SCROLLBARS_VERTICAL_ONLY
来实现。
参数 scrollbars
的静态常量值见表。
参数scrollbars的静态常量值
构造方法 | 描述 |
---|---|
SCROLLBARS_BOTH | 显示垂直和水平滚动条 |
SCROLLBARS_HORIZONTAL_ONLY | 显示水平滚动条 |
SCROLLBARS_NONE | 不显示滚动条 |
SCROLLBARS_VERTICAL_ONLY | 显示垂直滚动条 |
除了与TextField相似的常用成员方法,类TextArea还经常用到成员方法append(String str)
,将给定文本追加到文本区的当前文本;setEditable()
设置是否可以编辑。
复选框(Checkbox)
复选框是一种输入信息的组件,拥有“状态”的特性,通过鼠标单击复选框的操作可以将其状态从“true
”更改为“false
”,或从“false
” 更改为“true
”。通过布局设置,多个复选框组件可形成一组,实现多项选择。
AWT 的 Checkbox类实例化复选框对象,构造方法有5种重载形式。通过给 Checkbox 类构造方法的参数赋值,可以设置复选框的文本标签内容,以及复选框的状态值。Checkbox类的构造方法见表。
Checkbox类的构造方法
构造方法 | 描述 |
---|---|
Checkbox() | 创建复选框,未指定标签内容 |
Checkbox(String label) | 创建复选框,指定标签内容 |
Checkbox(String label, boolean state) | 创建复选框,即指定标签,也指定状态 |
Checkbox(String label, boolean state,CheckboxGroup group) | 创建Checkbox 对象,指定标签,指定状态,指定复选框组 |
Checkbox(String label, CheckboxGroup group,boolean state) | 创建 Checkbox对象,指定标签,指定复选框组,指定状态 |
Checkbox 对象常用的成员方法与其状态有关,setState(boolean state)
设置状态值,getState()
获取状态值。
单选按钮组的实现(结合使用CheckboxGroup类)
单选按钮是一种输入信息的组件,拥有“状态”的特性,通过鼠标单击单选按钮的操作可以将其状态从“true” 更改为“false”,或从“false”更改为“true”。作为同一组的多个单选按钮组件是互斥的,即每一时刻只能有一个组件的状态为“true”,从而实现单项选择。
在AWT中,单选按钮对象的创建也是通过 Checkbox类实例化的。参数 group 是类 CheckboxGroup 的对象,同一组的单选按钮,必须保证 group
参数相同。
如
import java.awt.*;
import java.awt.event.ActionEvent;
public class test extends Frame {
Panel panel = new Panel();
CheckboxGroup group = new CheckboxGroup();
Checkbox checkbox1 = new Checkbox("boy",group,true);
Checkbox checkbox2 = new Checkbox("girl",group,false);
public test(String s)
{
super(s);
panel.add(checkbox1);
panel.add(checkbox2);
add(panel);
pack();
setVisible(true);
}
public static void main(String[] args)
{
new test("test");
}
}
下拉列表(Choice)
下拉列表是一种输入信息的组件,带有一系列选项,每次可以从中选择一项作为输入,即支持单选。下拉列表将所有的选项进行隐藏,当选用其中的选项时才会显示出来,这样能够节省显示空间,适用于待选择选项较多的情况。
AWT中的类 Choice 实例化得到下拉列表组件,它的构造方法 Choice()
创建一个没有任何选项的空白下拉菜单。此后,调用成员方法 add(Sring item)
添加选项 item
;默认情况下,添加的第一个项将成为选定项。类 Choice的常用成员方法与选项的增、删、选等有关。Choice 类的常用成员方法见表。
Choice类的常用成员方法
成员方法 | 描述 |
---|---|
void add(String item) | 将一个选项添加到 Choice 下拉列表中 |
String getltem(int index) | 获取 Choice 下拉列表中指定索引上的字符串 |
int getltemCount() | 返回 Choice下拉列表中项的数量 |
int getSelectedIndex() | 返回当前选定项的索引 |
String getSelectedItem() | 获取当前选择项的内容 |
void remove(int index) | 删除指定位置的选项 |
void removeAll() | 移除 Choice 下拉列表中所有项 |
void select(int index) | 选择指定索引的选项 |
void select(String str) | 选择指定字符串的选项 |
列表(List)
列表是一种输入信息的组件,提供了一个可滚动的选项列表;通过设置,每次可以从中选择单项或多项作为输入。列表将所有选项罗列和显示在列表框中,比下拉列表更加直观。
AWT的List 类实例化列表组件,提供多个文本选项,支持滚动条。它的构造方法有3种重载形式,通过参数赋值可以指定列表项数目,以及是否允许进行多项选择。无论哪种形式的构造方法,创建的都是空白列表。此后,调用成员方法add()
添加选项。下面的语句演示了List 创建列表:
List Ist = new List(4, false);
Ist.add("Mercury");
Ist.add("Venus");
Ist.add("Earth");
Ist.add("JavaSoft");
类List的常用成员方法(见表) 与选项的增、删、选等有关。
List的常用成员方法
成员方法 | 描述 |
---|---|
String getSelectedItem(int ) | 返回选中的字符串 |
int countItems() | 返回列表条目数 |
int getSelectedIndex () | 返回当前选项的索引 |
String getltem(int) | 返回指定索引处的字符串 |
void removeAll() | 删除所有选项 |
void remove(int) | 删除指定位置的选项 |
void addItem(String , int) | 在指定位置加入一个选项 |
void addltem (String) | 向列表末尾加入一个选项 |
void select(String) | 选择指定字符串的选项 |
代码示例
实现下图效果
import java.awt.*;
public class test {
Frame frame = new Frame("test");
//定义一个按钮
Button ok = new Button("right");
//定义一个复选框组
CheckboxGroup cbg = new CheckboxGroup();
//定义一个单选框,初始处于被选中状态,并添加到cbg组中
Checkbox male = new Checkbox("man", cbg, true);
//定义一个单选框,初始处于未被选中状态,并添加到cbg组中
Checkbox female = new Checkbox("girl", cbg, false);
//定义一个复选框,初始处于未被选中状态
Checkbox married = new Checkbox("married?", false);
//定义一个下拉选择框
Choice colorChooser = new Choice();
//定义一个列表选择框
List colorList = new List(6, true);
//定义一个5行,20列的多行文本域
TextArea ta = new TextArea(5, 20);
//定义一个50列的单行文本域
TextField tf = new TextField(50);
public void init() {
//往下拉选择框中添加内容
colorChooser.add("red");
colorChooser.add("gree");
colorChooser.add("blue");
//往列表选择框中添加内容
colorList.add("red");
colorList.add("gree");
colorList.add("blue");
//创建一个装载按钮和文本框的Panel容器
Panel bottom = new Panel();
bottom.add(tf);
bottom.add(ok);
//把bottom添加到Frame的底部
frame.add(bottom,BorderLayout.SOUTH);
//创建一个Panel容器,装载下拉选择框,单选框和复选框
Panel checkPanel = new Panel();
checkPanel.add(colorChooser);
checkPanel.add(male);
checkPanel.add(female);
checkPanel.add(married);
//创建一个垂直排列的Box容器,装载 多行文本域和checkPanel
Box topLeft = Box.createVerticalBox();
topLeft.add(ta);
topLeft.add(checkPanel);
//创建一个水平排列的Box容器,装载topLeft和列表选择框
Box top = Box.createHorizontalBox();
top.add(topLeft);
top.add(colorList);
//将top添加到frame的中间区域
frame.add(top);
//设置frame最佳大小并可见
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
new test().init();
}
}
二、对话框Dialog
简介
Dialog 是 Window 类的子类,是 一个容器类,属于特殊组件 。 对话框是可以独立存在的顶级窗口, 因此用法与普通窗口的用法几乎完全一样,但是使用对话框需要注意下面两点:
注意事项
- 对话框通常依赖于其他窗口,就是通常需要有一个父窗口;
- 对话框有非模式(non-modal)和模式(modal)两种,当某个模式对话框被打开后,该模式对话框总是位于它的父窗口之上,在模式对话框被关闭之前,父窗口无法获得焦点。
方法名称
方法名称 | 方法功能 |
---|---|
Dialog(Frame owner, String title, boolean modal) | 创建一个对话框对象: owner:当前对话框的父窗口 title:当前对话框的标题 modal:当前对话框是否是模式对话框,true/false |
代码示例1
通过Frame、Button、Dialog实现下图效果:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class test {
public static void main(String[] args) {
Frame frame = new Frame("test:Dialog");
Dialog d1 = new Dialog(frame, "modal", true);
Dialog d2 = new Dialog(frame, "no modal", false);
Button b1 = new Button("modal");
Button b2 = new Button("no modal");
//设置对话框的大小和位置
d1.setBounds(20,30,300,400);
d2.setBounds(20,30,300,400);
//给b1和b2绑定监听事件
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d1.setVisible(true);
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d2.setVisible(true);
}
});
//把按钮添加到frame中
frame.add(b1);
frame.add(b2,BorderLayout.SOUTH);
//设置frame最佳大小并可见
frame.pack();
frame.setVisible(true);
}
}
该程序使用Java的AWT(Abstract Window Toolkit)库创建了一个窗口和两个对话框。程序的主要部分在main
方法中。
首先,创建了一个Frame
对象,表示窗口,并设置了窗口的标题为"test:Dialog"。
然后,创建了两个Dialog
对象,表示对话框。第一个对话框是模态对话框(modal
),第二个对话框是非模态对话框(no modal
)。模态对话框会阻塞其他窗口的操作,直到对话框被关闭,而非模态对话框不会阻塞其他窗口的操作。
接下来,创建了两个Button
对象,分别用来触发显示对话框的操作。第一个按钮是"modal",点击后会显示第一个对话框,第二个按钮是"no modal",点击后会显示第二个对话框。
然后,设置了两个对话框的大小和位置。
接着,给两个按钮绑定了监听器,当按钮被点击时,对应的对话框会显示出来。在监听器的实现中,调用对话框的setVisible(true)
方法显示对话框。
最后,将两个按钮添加到窗口的布局中,并设置窗口的最佳大小并可见。
这样,运行程序后,会显示一个窗口和两个按钮,点击按钮会显示对应的对话框。
在Dialog对话框中,可以根据需求,自定义内容
代码示例2
点击按钮,弹出一个模式对话框,其内容如下
public class DialogDemo2 {
public static void main(String[] args) {
Frame frame = new Frame("这里测试Dialog");
Dialog d1 = new Dialog(frame, "模式对话框", true);
//往对话框中添加内容
Box vBox = Box.createVerticalBox();
vBox.add(new TextField(15));
vBox.add(new JButton("确认"));
d1.add(vBox);
Button b1 = new Button("打开模式对话框");
//设置对话框的大小和位置
d1.setBounds(20,30,200,100);
//给b1绑定监听事件
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d1.setVisible(true);
}
});
//把按钮添加到frame中
frame.add(b1);
//设置frame最佳大小并可见
frame.pack();
frame.setVisible(true);
}
}
三、FileDialog
简介
Dialog 类还有 一个子类 : FileDialog ,它代表一个文件对话框,用于打开或者保存 文件,需要注意的是FileDialog无法指定模态或者非模态,这是因为 FileDialog 依赖于运行平台的实现,如果运行平台的文件对话框是模态的,那么 FileDialog 也是模态的;否则就是非模态的 。
方法名称
方法名称 | 方法功能 |
---|---|
FileDialog(Frame parent, String title, int mode) | 创建一个文件对话框: parent:指定父窗口 title:对话框标题 mode:文件对话框类型,如果指定为FileDialog.load,用于打开文件,如果指定为FileDialog.SAVE,用于保存文件 |
String getDirectory() | 获取被打开或保存文件的绝对路径 |
String getFile() | 获取被打开或保存文件的文件名 |
代码示例
使用 Frame、Button和FileDialog完成下图效果:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FileDialogTest {
public static void main(String[] args) {
Frame frame = new Frame("这里测试FileDialog");
FileDialog d1 = new FileDialog(frame, "选择需要加载的文件", FileDialog.LOAD);
FileDialog d2 = new FileDialog(frame, "选择需要保存的文件", FileDialog.SAVE);
Button b1 = new Button("打开文件");
Button b2 = new Button("保存文件");
//给按钮添加事件
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d1.setVisible(true);
//打印用户选择的文件路径和名称
System.out.println("用户选择的文件路径:"+d1.getDirectory());
System.out.println("用户选择的文件名称:"+d1.getFile());
}
});
System.out.println("-------------------------------");
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d2.setVisible(true);
//打印用户选择的文件路径和名称
System.out.println("用户选择的文件路径:"+d2.getDirectory());
System.out.println("用户选择的文件名称:"+d2.getFile());
}
});
//添加按钮到frame中
frame.add(b1);
frame.add(b2,BorderLayout.SOUTH);
//设置frame最佳大小并可见
frame.pack();
frame.setVisible(true);
}
}