前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AWT常用组件

AWT常用组件

作者头像
鲜于言悠
发布2024-06-13 10:57:47
700
发布2024-06-13 10:57:47
举报
文章被收录于专栏:c/c++的学习笔记c/c++的学习笔记
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 参数相同。

代码语言:javascript
复制
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 创建列表:

代码语言:javascript
复制
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)

选择指定字符串的选项

代码示例

实现下图效果

代码语言:javascript
复制
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实现下图效果:

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
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

点击按钮,弹出一个模式对话框,其内容如下

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
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完成下图效果:

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
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);
    }
}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • AWT中常用组件
  • 前言
  • 一、基本组件
    • 组件名
      • 标签(Label类)
      • 按钮(Button)
      • 文本框(TextField)
      • 文本域(TextArea)
      • 复选框(Checkbox)
      • 单选按钮组的实现(结合使用CheckboxGroup类)
      • 下拉列表(Choice)
      • 列表(List)
    • 代码示例
    • 二、对话框Dialog
      • 简介
        • 注意事项
          • 方法名称
            • 代码示例1
              • 代码示例2
              • 三、FileDialog
                • 简介
                  • 方法名称
                    • 代码示例
                    相关产品与服务
                    容器服务
                    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档