Java 中文官方教程 2022 版(十五)(2)

简介: Java 中文官方教程 2022 版(十五)

Java 中文官方教程 2022 版(十五)(1)https://developer.aliyun.com/article/1486397

如何使用 JButton 功能

普通按钮 — JButton 对象 — 比 AbstractButton 类提供的功能稍多一点:你可以将 JButton 设置为默认按钮。

一个顶级容器中最多只能有一个默认按钮。默认按钮通常具有突出的外观,并且当顶级容器具有键盘焦点并且用户按下 Return 或 Enter 键时会被点击。这里是一个对话框的图片,实现在 ListDialog 示例中,其中设置按钮是默认按钮:


您可以通过在顶层容器的根窗格上调用setDefaultButton方法来设置默认按钮。以下是为ListDialog示例设置默认按钮的代码:

*//In the constructor for a JDialog subclass:*
getRootPane().setDefaultButton(setButton);

默认按钮功能的确切实现取决于外观。例如,在 Windows 外观中,默认按钮会更改为具有焦点的按钮,以便按 Enter 键单击具有焦点的按钮。当没有按钮具有焦点时,您最初指定为默认按钮的按钮再次成为默认按钮。

如何使用复选框

JCheckBox类提供了对复选框按钮的支持。您还可以使用JCheckBoxMenuItem类将复选框放入菜单中。因为JCheckBoxJCheckBoxMenuItem继承自AbstractButton,Swing 复选框具有本节前面讨论的所有常规按钮特性。例如,您可以指定要在复选框中使用的图像。

复选框类似于单选按钮,但它们的选择模型不同,按照惯例。一组复选框中的任意数量 — 可以选择零个、一些或全部。另一方面,一组单选按钮只能选择一个按钮。

这是一个使用四个复选框自定义卡通的应用程序的图片:


试试这个:

  1. 单击启动按钮以使用Java™ Web Start运行 CheckBox Demo(下载 JDK 7 或更高版本)。或者,要自行编译和运行示例,请参考示例索引。
  2. 单击下巴按钮或按下 Alt-c。
    下巴复选框变为未选中状态,下巴从图片中消失。其他复选框保持选中状态。此应用程序有一个项目侦听器,用于监听所有复选框。每次项目侦听器接收到事件时,应用程序会加载反映复选框当前状态的新图片。

每次单击复选框都会生成一个项目事件和一个操作事件。通常,您只监听项目事件,因为它们让您确定单击是选择还是取消选择复选框。以下是来自CheckBoxDemo.java的代码,用于创建上一个示例中的复选框并对单击做出反应。

*//In initialization code:*
    chinButton = new JCheckBox("Chin");
    chinButton.setMnemonic(KeyEvent.VK_C); 
    chinButton.setSelected(true);
    glassesButton = new JCheckBox("Glasses");
    glassesButton.setMnemonic(KeyEvent.VK_G); 
    glassesButton.setSelected(true);
    hairButton = new JCheckBox("Hair");
    hairButton.setMnemonic(KeyEvent.VK_H); 
    hairButton.setSelected(true);
    teethButton = new JCheckBox("Teeth");
    teethButton.setMnemonic(KeyEvent.VK_T); 
    teethButton.setSelected(true);
    //Register a listener for the check boxes.
    chinButton.addItemListener(this);
    glassesButton.addItemListener(this);
    hairButton.addItemListener(this);
    teethButton.addItemListener(this);
...
public void itemStateChanged(ItemEvent e) {
    ...
    Object source = e.getItemSelectable();
    if (source == chinButton) {
        *//...make a note of it...*
    } else if (source == glassesButton) {
        *//...make a note of it...*
    } else if (source == hairButton) {
        *//...make a note of it...*
    } else if (source == teethButton) {
        *//...make a note of it...*
    }
    if (e.getStateChange() == ItemEvent.DESELECTED)
        *//...make a note of it...*
    ...
    updatePicture();
}

如何使用单选按钮

单选按钮是一组按钮,按照惯例,一次只能选择一个按钮。Swing 版本支持使用JRadioButtonButtonGroup类的单选按钮。要将单选按钮放入菜单中,请使用JRadioButtonMenuItem类。显示一组中的一个选择的其他方式包括组合框和列表。单选按钮看起来类似于复选框,但是按照惯例,复选框不限制同时选择的项目数量。

因为JRadioButton继承自AbstractButton,Swing 单选按钮具有所有通常的按钮特性,如本节前面讨论的。例如,您可以指定在单选按钮中显示的图像。

下面是一个应用程序的图片,使用五个单选按钮让您选择显示哪种宠物:


试试这个:

  1. 点击启动按钮以使用Java™ Web Start运行 RadioButton Demo(下载 JDK 7 或更高版本)。或者,要自行编译和运行示例,请参考示例索引。
  2. 点击Dog按钮或按下 Alt-d 键。
    Dog按钮被选中,使Bird按钮变为未选中。图片从鸟变为狗。这个应用程序有一个监听所有单选按钮的 action listener。每次 action listener 接收到事件时,应用程序会显示刚刚点击的单选按钮的图片。

每当用户点击单选按钮(即使它已经被选中),按钮都会触发一个 action event。还会发生一个或两个 item events — 一个来自刚刚被选中的按钮,另一个来自失去选择的按钮(如果有的话)。通常,你会使用一个 action listener 来处理单选按钮的点击。

下面是RadioButtonDemo.java中创建单选按钮并响应点击的代码,这是前面示例中的单选按钮。

*//In initialization code:*
    //Create the radio buttons.
    JRadioButton birdButton = new JRadioButton(birdString);
    birdButton.setMnemonic(KeyEvent.VK_B);
    birdButton.setActionCommand(birdString);
    birdButton.setSelected(true);
    JRadioButton catButton = new JRadioButton(catString);
    catButton.setMnemonic(KeyEvent.VK_C);
    catButton.setActionCommand(catString);
    JRadioButton dogButton = new JRadioButton(dogString);
    dogButton.setMnemonic(KeyEvent.VK_D);
    dogButton.setActionCommand(dogString);
    JRadioButton rabbitButton = new JRadioButton(rabbitString);
    rabbitButton.setMnemonic(KeyEvent.VK_R);
    rabbitButton.setActionCommand(rabbitString);
    JRadioButton pigButton = new JRadioButton(pigString);
    pigButton.setMnemonic(KeyEvent.VK_P);
    pigButton.setActionCommand(pigString);
    //Group the radio buttons.
    ButtonGroup group = new ButtonGroup();
    group.add(birdButton);
    group.add(catButton);
    group.add(dogButton);
    group.add(rabbitButton);
    group.add(pigButton);
    //Register a listener for the radio buttons.
    birdButton.addActionListener(this);
    catButton.addActionListener(this);
    dogButton.addActionListener(this);
    rabbitButton.addActionListener(this);
    pigButton.addActionListener(this);
...
public void actionPerformed(ActionEvent e) {
    picture.setIcon(new ImageIcon("images/" 
                                  + e.getActionCommand() 
                                  + ".gif"));
}

对于每组单选按钮,您需要创建一个ButtonGroup实例,并将每个单选按钮添加到其中。ButtonGroup会在用户选择组中的另一个按钮时取消先前选中的按钮。

通常应该初始化一组单选按钮,以便其中一个被选中。但是,API 不强制执行此规则 — 一组单选按钮可以没有初始选择。一旦用户做出选择,从那时起将仅选择一个按钮。

按钮 API

以下表格列出了常用的与按钮相关的 API。您可能调用的其他方法,如 setFontsetForeground,在 JComponent 类的 API 表中 列出。

使用按钮的 API 分为以下几类:

  • 设置或获取按钮的内容
  • 微调按钮的外观
  • 实现按钮的功能
  • 复选框构造函数
  • 单选按钮构造函数
  • 切换按钮构造函数
  • 常用的按钮组构造函数/方法

设置或获取按钮的内容

方法或构造函数 目的

| JButton(Action) JButton(String, Icon)

JButton(String)

JButton(Icon)

JButton() | 创建一个 JButton 实例,并将其初始化为具有指定的文本/图像/操作。 |

| void setAction(Action) Action getAction()

根据 Action 实例的值设置或获取按钮的属性。

| void setText(String) String getText()

设置或获取按钮显示的文本。您可以使用 HTML 格式,如 在 Swing 组件中使用 HTML 中所述。

| void setIcon(Icon) Icon getIcon()

设置或获取按钮在未选中或按下时显示的图像。

| void setDisabledIcon(Icon) Icon getDisabledIcon()

设置或获取按钮在禁用时显示的图像。如果您没有指定禁用图像,则外观和感觉会通过操作默认图像来创建一个。

| void setPressedIcon(Icon) Icon getPressedIcon()

设置或获取按钮在被按下时显示的图像。

| void setSelectedIcon(Icon) Icon getSelectedIcon()

void setDisabledSelectedIcon(Icon)

Icon getDisabledSelectedIcon()

设置或获取按钮在选定时显示的图像。如果您没有指定禁用选定图像,则外观和感觉会通过操作选定图像来创建一个。

| setRolloverEnabled(boolean) boolean isRolloverEnabled()

void setRolloverIcon(Icon)

Icon getRolloverIcon()

void setRolloverSelectedIcon(Icon)

Icon getRolloverSelectedIcon()

使用setRolloverIcon(someIcon)使按钮在鼠标悬停在其上时显示指定图标。setRolloverSelectedIcon方法允许您在按钮选定时指定悬停图标,这对于两状态按钮(如切换按钮)非常有用。设置悬停图标会自动调用setRollover(true),启用悬停效果。

调整按钮外观

方法或构造函数 目的

| void setHorizontalAlignment(int) void setVerticalAlignment(int)

int getHorizontalAlignment()

int getVerticalAlignment() | 设置或获取按钮内容应该放置在按钮的何处。AbstractButton 类允许水平对齐的以下任一值:RIGHTLEFTCENTER(默认)、LEADINGTRAILING。对于垂直对齐:TOPCENTER(默认)和 BOTTOM。 |

| void setHorizontalTextPosition(int) void setVerticalTextPosition(int)

int getHorizontalTextPosition()

int getVerticalTextPosition() | 设置或获取按钮文本应该放置在何处,相对于按钮的图像。AbstractButton 类允许水平位置的以下任一值:LEFTCENTERRIGHTLEADINGTRAILING(默认)。对于垂直位置:TOPCENTER(默认)和 BOTTOM。 |

void setMargin(Insets) Insets getMargin() 设置或获取按钮边框与其内容之间的像素数。
void setFocusPainted(boolean) boolean isFocusPainted() 设置或获取按钮在获得焦点时是否应该呈现不同外观。
void setBorderPainted(boolean) boolean isBorderPainted() 设置或获取按钮边框是否应该被绘制。

| void setIconTextGap(int) int getIconTextGap()

设置或获取文本和此按钮中显示的图标之间的间距。

实现按钮的功能

方法或构造函数 目的

| void setMnemonic(int) char getMnemonic()

设置或获取通过按下按钮的键盘替代方法。setMnemonic方法的一种形式接受一个字符参数;然而,Swing 团队建议您改用一个int参数,指定一个KeyEvent.VK_*X*常量。

| void setDisplayedMnemonicIndex(int) int getDisplayedMnemonicIndex()

设置或获取文本中应该被装饰以表示助记符的字符的提示。请注意,并非所有外观和感觉都支持此功能。

| void setActionCommand(String) String getActionCommand()

设置或获取按钮执行的动作的名称。

| void addActionListener(ActionListener) ActionListener removeActionListener()

添加或移除监听按钮触发的动作事件的对象。

| void addItemListener(ItemListener) ItemListener removeItemListener()

添加或移除监听按钮触发的项目事件的对象。

| void setSelected(boolean) boolean isSelected()

设置或获取按钮是否被选中。仅适用于具有开/关状态的按钮,如复选框。

| void doClick() void doClick(int)

以编程方式执行“点击”操作。可选参数指定按钮看起来被按下的时间(以毫秒为单位)。
void setMultiClickThreshhold(long) long getMultiClickThreshhold()

复选框构造函数

构造函数 目的

| JCheckBox(操作) JCheckBox(字符串)

JCheckBox(字符串, 布尔值)

JCheckBox(图标)

JCheckBox(图标, 布尔值)

JCheckBox(字符串, 图标)

JCheckBox(字符串, 图标, 布尔值)

JCheckBox() | 创建一个JCheckBox实例。字符串参数指定复选框应显示的文本(如果有)。同样,Icon参数指定应使用的图像,而不是外观的默认复选框图像。将布尔参数指定为true会将复选框初始化为选中状态。如果省略布尔参数或为false,则复选框最初未选中。 |

| JCheckBoxMenuItem(操作) JCheckBoxMenuItem(字符串)

JCheckBoxMenuItem(字符串, 布尔值)

JCheckBoxMenuItem(图标)

JCheckBoxMenuItem(字符串, 图标)

JCheckBoxMenuItem(字符串, 图标, 布尔值)

JCheckBoxMenuItem() | 创建一个JCheckBoxMenuItem实例。参数的解释方式与JCheckBox构造函数的参数相同,只是任何指定的图标会显示在普通复选框图标的旁边。 |

单选按钮构造函数

构造函数 目的

| JRadioButton(操作) JRadioButton(字符串)

JRadioButton(字符串, 布尔值)

JRadioButton(图标)

JRadioButton(图标, 布尔值)

JRadioButton(字符串, 图标)

JRadioButton(字符串, 图标, 布尔值)

JRadioButton() | 创建一个JRadioButton实例。字符串参数指定了单选按钮应显示的文本(如果有)。同样,Icon参数指定了应该使用的图像,而不是外观的默认单选按钮图像。将布尔参数指定为true会将单选按钮初始化为选中状态,取决于ButtonGroup对象的批准。如果布尔参数不存在或为false,则单选按钮最初未选中。 |

| JRadioButtonMenuItem(操作) JRadioButtonMenuItem(字符串)

JRadioButtonMenuItem(图标)

JRadioButtonMenuItem(字符串, 图标)

JRadioButtonMenuItem() | 创建一个JRadioButtonMenuItem实例。参数的解释方式与JRadioButton构造函数的参数相同,只是任何指定的图标会显示在普通单选按钮图标之外。 |

切换按钮构造函数

构造函数 目的

| JToggleButton(操作) JToggleButton(字符串)

JToggleButton(String, boolean)

JToggleButton(Icon)

JToggleButton(Icon, boolean)

JToggleButton(String, Icon)

JToggleButton(String, Icon, boolean)

JToggleButton() | 创建一个 JToggleButton 实例,类似于 JButton,但具有两种状态。通常,您应该使用 JRadioButtonJCheckBox 而不是直接实例化 JToggleButton,但在您不希望出现典型的单选按钮或复选框外观时,JToggleButton 可能会有用。字符串参数指定切换按钮应显示的文本(如果有)。同样,Icon 参数指定应使用的图像。将布尔参数指定为 true 会将切换按钮初始化为选定状态。如果省略布尔参数或为 false,则切换按钮最初未选定。 |

常用的按钮组构造函数/方法

构造函数或方法 目的
ButtonGroup() 创建一个 ButtonGroup 实例。
void add(AbstractButton) void remove(AbstractButton) 将按钮添加到组中,或从组中移除按钮。
public ButtonGroup getGroup() (在 DefaultButtonModel 中) 获取控制按钮的 ButtonGroup(如果有)。例如:ButtonGroup group = ((DefaultButtonModel)button.getModel()).getGroup();
公共 ButtonGroup clearSelection() 清除 ButtonGroup 中选定按钮的状态。ButtonGroup 中的按钮都不会被选中。

使用不同类型按钮的示例

以下示例使用按钮。另请参阅使用工具栏的示例,其中列出了将 JButton 对象添加到 JToolBar 中的程序。

示例 描述位置 备注
ButtonDemo 如何使用常见按钮 API 使用助记符和图标。指定按钮文本位置,相对于按钮图标。使用动作命令。
ButtonHtmlDemo 在 Swing 组件中使用 HTML 一个使用 HTML 格式的 ButtonDemo 版本。
ListDialog 如何使用 JButton 功能 实现一个带有两个按钮的对话框,其中一个是默认按钮。
DialogDemo 如何制作对话框 具有与单选按钮状态相关联的“显示”按钮行为。使用匿名的内部类实现动作监听器。
ProgressBarDemo 如何监视进度 使用命名的内部类实现按钮的动作监听器。
CheckBoxDemo 如何使用复选框 使用复选框按钮确定应显示哪 16 幅图像。
ActionDemo 如何使用动作 使用复选框菜单项来设置程序的状态。
RadioButtonDemo 如何使用单选按钮 使用单选按钮确定应显示哪五幅图像。
DialogDemo 如何制作对话框 包含几组单选按钮,用于确定要弹出哪个对话框。
MenuDemo 如何使用菜单 包含单选按钮菜单项和复选框菜单项。
ColorChooserDemo2 如何使用颜色选择器 CrayonPanel 中的蜡笔实现为切换按钮。
ScrollDemo 如何使用滚动窗格 cm 按钮是一个切换按钮。

您可以从以下文档中了解更多关于 JavaFX 按钮组件的信息:

如何使用 ButtonGroup 组件

原文:docs.oracle.com/javase/tutorial/uiswing/components/buttongroup.html

ButtonGroup组件管理一组按钮的选中/未选中状态。对于该组,ButtonGroup实例保证一次只能选择一个按钮。

最初,由ButtonGroup实例管理的所有按钮都未被选中。

如何使用 ButtonGroup 功能

你可以将ButtonGroup与任何继承自AbstractButton的对象一起使用。通常,按钮组包含JRadioButton, JRadioButtonMenuItemJToggleButton的实例。将JButtonJMenuItem的实例放入按钮组中是没有意义的,因为JButtonJMenuItem没有实现选择/取消选择按钮状态。

通常,编写使用ButtonGroup组件的代码时,通常会遵循以下步骤。

  1. 子类化JFrame
  2. 与布局管理器一起调用ContextPane
  3. 声明和配置一组单选按钮或切换按钮
  4. 实例化一个ButtonGroup对象
  5. 调用该 buttongroup 对象上的add方法,以便将每个按钮添加到组中。

有关详细信息和代码示例,请参阅如何使用单选按钮。它展示了如何使用ButtonGroup组件将一组单选按钮设置到一个 JPanel 中。

ButtonGroup API

常用的 Button Group 构造函数/方法

构造函数或方法 目的
ButtonGroup() 创建一个ButtonGroup实例。
void add(AbstractButton) void remove(AbstractButton) 将按钮添加到组中,或从组中移除按钮。
public ButtonGroup getGroup() (在DefaultButtonModel中) 获取控制按钮的ButtonGroup(如果有)。例如:ButtonGroup group = ((DefaultButtonModel)button.getModel()).getGroup();
public ButtonGroup clearSelection() 清除 ButtonGroup 中选定按钮的状态。ButtonGroup 中的按钮都未被选中。

ButtonGroup 示例

以下演示应用程序使用 ButtonGroup 组件将单选按钮分组显示在窗口上。

示例 描述位置 注意事项
RadioButtonDemo 如何使用单选按钮 使用单选按钮确定应显示哪五幅图像。

如何使用颜色选择器

原文:docs.oracle.com/javase/tutorial/uiswing/components/colorchooser.html

使用JColorChooser类使用户可以从调色板中选择颜色。颜色选择器是一个组件,您可以将其放置在程序 GUI 中的任何位置。JColorChooser API 还可以轻松地弹出包含颜色选择器的对话框(模态或非模态)。

这是一个使用颜色选择器设置横幅文本颜色的应用程序的图片:


试试这个:

  • 单击“启动”按钮以使用Java™ Web Start运行 ColorChooser 演示(下载 JDK)。或者,要自行编译和运行示例,请参考示例索引。

该程序的源代码位于ColorChooserDemo.java中。

颜色选择器包括标有选择文本颜色的框内的所有内容。这是 Java 外观和感觉中标准颜色选择器的样子。它包含两部分,一个选项卡窗格和一个预览面板。选项卡窗格中的三个选项卡选择选择器面板。选项卡窗格下方的预览面板显示当前选定的颜色。

这是创建JColorChooser实例并将其添加到容器的示例代码:

public class ColorChooserDemo extends JPanel ... {
    public ColorChooserDemo() {
        super(new BorderLayout());
        banner = new JLabel("Welcome to the Tutorial Zone!",
                            JLabel.CENTER);
        banner.setForeground(Color.yellow);
        . . .
        tcc = new JColorChooser(banner.getForeground());
        . . .
        add(tcc, BorderLayout.PAGE_END);
    }

Java 中文官方教程 2022 版(十五)(3)https://developer.aliyun.com/article/1486401

相关文章
|
15天前
|
Java 开发者 UED
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
30 3
|
27天前
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
56 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
16天前
|
Java 开发者
Java多线程教程:使用ReentrantLock实现高级锁功能
Java多线程教程:使用ReentrantLock实现高级锁功能
19 1
|
1月前
|
存储 网络协议 Oracle
java教程
java教程【8月更文挑战第11天】
23 5
|
14天前
|
Java API
Java与Lua互相调用简单教程
【8月更文挑战第29天】在软件开发中,Java以其强大的稳定性和广泛的生态系统著称,而Lua则因其轻量级、灵活和嵌入式的特点在脚本编写、游戏开发等领域大放异彩。将两者结合使用,可以充分利用Java的底层能力和Lua的快速开发优势。本文将通过一个简单的教程,介绍如何在Java程序中嵌入并执行Lua脚本,以及如何在Lua中调用Java方法。
16 0
|
2月前
|
SQL 安全 Java
「滚雪球学Java」教程导航帖(更新2024.07.16)
《滚雪球学Spring Boot》是一个面向初学者的Spring Boot教程,旨在帮助读者快速入门Spring Boot开发。本专通过深入浅出的方式,将Spring Boot开发中的核心概念、基础知识、实战技巧等内容系统地讲解,同时还提供了大量实际的案例,让读者能够快速掌握实用的Spring Boot开发技能。本书的特点在于注重实践,通过实例学习的方式激发读者的学习兴趣和动力,并引导读者逐步掌握Spring Boot开发的实际应用。
60 1
「滚雪球学Java」教程导航帖(更新2024.07.16)
WXM
|
2月前
|
Oracle Java 关系型数据库
Java JDK下载安装及环境配置超详细图文教程
Java JDK下载安装及环境配置超详细图文教程
WXM
230 3
|
2月前
|
测试技术 API Android开发
《手把手教你》系列基础篇(九十七)-java+ selenium自动化测试-框架设计篇-Selenium方法的二次封装和页面基类(详解教程)
【7月更文挑战第15天】这是关于自动化测试框架中Selenium API二次封装的教程总结。教程中介绍了如何设计一个支持不同浏览器测试的页面基类(BasePage),该基类包含了对Selenium方法的二次封装,如元素的输入、点击、清除等常用操作,以减少重复代码。此外,页面基类还提供了获取页面标题和URL的方法。
61 2
|
2月前
|
Web App开发 XML Java
《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
【7月更文挑战第14天】这篇教程介绍了如何使用Java和Selenium构建一个支持跨浏览器测试的自动化测试框架。设计的核心是通过读取配置文件来切换不同浏览器执行测试用例。配置文件中定义了浏览器类型(如Firefox、Chrome)和测试服务器的URL。代码包括一个`BrowserEngine`类,它初始化配置数据,根据配置启动指定的浏览器,并提供关闭浏览器的方法。测试脚本`TestLaunchBrowser`使用`BrowserEngine`来启动浏览器并执行测试。整个框架允许在不同浏览器上运行相同的测试,以确保兼容性和一致性。
63 3
|
2月前
|
存储 Web App开发 Java
《手把手教你》系列基础篇(九十五)-java+ selenium自动化测试-框架之设计篇-java实现自定义日志输出(详解教程)
【7月更文挑战第13天】这篇文章介绍了如何在Java中创建一个简单的自定义日志系统,以替代Log4j或logback。
234 5