java-GUI编程之AWT组件

AWT中常用组件 基本组件

组件名 功能
Button Button
Canvas 用于绘图的画布
Checkbox 复选框组件(也可当做单选框组件使用)
CheckboxGroup 用于将多个Checkbox 组件组合成一组, 一组 Checkbox 组件将只有一个可以 被选中 , 即全部变成单选框组件
Choice 下拉选择框
Frame 窗口 , 在 GUI 程序里通过该类创建窗口
Label 标签类,用于放置提示性文本
List JU表框组件,可以添加多项条目
Panel 不能单独存在基本容器类,必须放到其他容器中
Scrollbar 滑动条组件。如果需要用户输入位于某个范围的值 , 就可以使用滑动条组件 ,比如调 色板中设置 RGB 的三个值所用的滑动条。当创建一个滑动条时,必须指定它的方向、初始值、 滑块的大小、最小值和最大值。
ScrollPane 带水平及垂直滚动条的容器组件
TextArea 多行文本域
TextField 单行文本框
这些 AWT 组件的用法比较简单,可以查阅 API 文档来获取它们各自的构方法、成员方法等详细信息。
API 文档地址:https://www.apiref.com/java11-zh/java.desktop/javax/swing/package-summary.html
案例:
? 实现下图效果:
【java-GUI编程之AWT组件】?

java-GUI编程之AWT组件
文章图片

演示代码:
import javax.swing.*; import java.awt.*; public class BasicComponentDemo { Frame frame = new Frame("这里测试基本组件"); //定义一个按钮 Button ok = new Button("确认"); //定义一个复选框组 CheckboxGroup cbg = new CheckboxGroup(); //定义一个单选框,初始处于被选中状态,并添加到cbg组中 Checkbox male = new Checkbox("男", cbg, true); //定义一个单选框,初始处于未被选中状态,并添加到cbg组中 Checkbox female = new Checkbox("女", cbg, false); //定义一个复选框,初始处于未被选中状态 Checkbox married = new Checkbox("是否已婚?", 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("红色"); colorChooser.add("绿色"); colorChooser.add("蓝色"); //往列表选择框中添加内容 colorList.add("红色"); colorList.add("绿色"); colorList.add("蓝色"); //创建一个装载按钮和文本框的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 BasicComponentDemo().init(); } }

对话框Dialog Dialog
Dialog 是 Window 类的子类,是 一个容器类,属于特殊组件 。 对话框是可以独立存在的顶级窗口, 因此用法与普通窗口的用法几乎完全一样,但是使用对话框需要注意下面两点:
  • 对话框通常依赖于其他窗口,就是通常需要有一个父窗口;
  • 对话框有非模式(non-modal)和模式(modal)两种,当某个模式对话框被打开后,该模式对话框总是位于它的父窗口之上,在模式对话框被关闭之前,父窗口无法获得焦点。
模式窗体:你必须关闭该窗体,才能操作其它窗体;比如说,必须按确定或取消,或者按关闭。
非模式窗体:不必关闭该窗体,就可转换到其它窗体上进行操作。
方法名称 方法功能
Dialog(Frame owner, String title, boolean modal) 创建一个对话框对象:
owner:当前对话框的父窗口
title:当前对话框的标题
modal:当前对话框是否是模式对话框,true/false
案例1:
? 通过Frame、Button、Dialog实现下图效果:
java-GUI编程之AWT组件
文章图片
演示代码1:
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.*; public class DialogDemo1 {public static void main(String[] args) {Frame frame = new Frame("这里测试Dialog"); Dialog d1 = new Dialog(frame, "模式对话框", true); Dialog d2 = new Dialog(frame, "非模式对话框", false); Button b1 = new Button("打开模式对话框"); Button b2 = new Button("打开非模式对话框"); //设置对话框的大小和位置 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); } }

在Dialog对话框中,可以根据需求,自定义内容
案例:
? 点击按钮,弹出一个模式对话框,其内容如下:
java-GUI编程之AWT组件
文章图片
演示代码:
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JButton; import java.awt.*; 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() 获取被打开或保存文件的文件名
案例2:
? 使用 Frame、Button和FileDialog完成下图效果:
java-GUI编程之AWT组件
文章图片
演示代码2:
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() { 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() { 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); } }

个人博客本文地址:https://kohler19.gitee.io/2022/04/05/java-GUI2/
个人博客:https://kohler19.gitee.io/
公众号:“愚生浅末”

    推荐阅读