Java 中文官方教程 2022 版(十四)(3)

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

Java 中文官方教程 2022 版(十四)(2)https://developer.aliyun.com/article/1486374

步骤 5:添加第二个 JLabel

添加第二个 JLabel

最后,添加第二个JLabel,重复第 2 步中的过程。将这第二个标签放置在JButton的右侧,如上所示。

调整 CelsiusConverter GUI

原文:docs.oracle.com/javase/tutorial/uiswing/learn/adjustinggui.html

现在,GUI 组件已经就位,是时候进行最后的调整了。有几种不同的方法可以做到这一点;这里建议的顺序只是一种可能的方法。

步骤 1:设置组件文本

首先,双击JTextFieldJButton以更改 IDE 插入的默认文本。当你从JTextField中擦除文本时,它会如下所示地缩小。将JButton的文本从“JButton1”更改为“Convert”。还将顶部JLabel的文本更改为“Celsius”,底部更改为“Fahrenheit”。

设置组件文本

步骤 2:设置组件大小

接下来,按住JTextFieldJButton组件并进行 shift 点击。这将突出显示它们各自被选中。右键点击(Mac 用户为 control 点击)选择“相同大小” -> “相同宽度”。现在,这些组件的宽度将相同,如下所示。在执行此步骤时,请确保JFrame本身没有被选中。如果选中了,相同大小菜单将不可用。

设置 JTextField 和 JButton 大小

步骤 3:移除额外空间

最后,拖动JFrame的右下角并调整其大小以消除任何额外的空白。请注意,如果消除了所有额外的空间(如下所示),标题(仅在运行时显示)可能不会完全显示。最终用户可以根据需要调整应用程序的大小,但你可能希望在右侧留一些额外的空间,以确保一切都正确地适合。尝试一下,并使用完成 GUI 的截图作为指南。

完成的 GUI

此应用程序的 GUI 部分现在已经完成!如果 NetBeans IDE 完成了它的工作,你应该觉得创建这个 GUI 是一个简单的,甚至是微不足道的任务。但是花点时间点击源选项卡;你可能会对生成的代码量感到惊讶。


*此图已经缩小以适应页面。

点击图像以查看其自然大小。*

要查看完整的代码,请根据需要在 IDE 中上下滚动。你可以通过点击源编辑器左侧的 + 或 - 符号来展开或折叠某些代码块(如方法体)。

添加应用程序逻辑

原文:docs.oracle.com/javase/tutorial/uiswing/learn/logic.html

现在是时候添加应用程序逻辑了。

步骤 1:更改默认变量名称

下图显示了当前在检查器中显示的默认变量名称。对于每个组件,变量名称首先出现,然后是方括号中的对象类型。例如,jTextField1 [JTextField]表示“jTextField1”是变量名称,“JTextField”是其类型。

默认变量名称

在此应用程序的上下文中,默认名称并不是非常相关,因此将它们从默认值更改为更有意义的内容是有意义的。右键单击每个变量名称,选择“更改变量名称”。完成后,变量名称应如下所示:

新的变量名称

新的变量名称是“tempTextField”、“celsiusLabel”、“convertButton”和“fahrenheitLabel”。您在检查器中进行的每个更改都将自动传播回源代码中。您可以放心,编译不会因手动编辑时常见的拼写错误或类似错误而失败。

步骤 2:注册事件监听器

当最终用户与 Swing GUI 组件交互(例如单击“Convert”按钮)时,该组件将生成一种特殊类型的对象 —— 称为事件对象 —— 然后将其广播到先前注册为该事件的监听器的任何其他对象。NetBeans IDE 使事件监听器注册变得非常简单:


*此图已经缩小以适应页面。

单击图像以查看其自然大小。*

在设计区域中,单击“Convert”按钮以选择它。确保只有“Convert”按钮被选中(如果 JFrame 本身也被选中,则此步骤将无效)。右键单击“Convert”按钮,选择事件 -> 动作 -> actionPerformed。这将生成所需的事件处理代码,使您可以在其中添加自己的功能的空方法体:


*此图已经缩小以适应页面。

单击图像以查看其自然大小。*

有许多不同类型的事件,代表着用户可以执行的各种操作(点击鼠标会触发一种类型的事件,键盘输入会触发另一种,移动鼠标则会触发另一种,依此类推)。我们的应用程序只关注ActionEvent;有关事件处理的更多信息,请参阅编写事件监听器。

步骤 3:添加温度转换代码

最后一步只需将温度转换代码粘贴到空方法体中。以下代码是将温度从摄氏度转换为华氏度所需的全部内容:


注意:

此示例不可本地化,因为parseDouble方法不可本地化。此代码片段仅用于说明目的。更健壮的实现将使用Scanner类来解析用户输入。


//Parse degrees Celsius as a double and convert to Fahrenheit.
    int tempFahr = (int)((Double.parseDouble(tempTextField.getText()))
            * 1.8 + 32);
    fahrenheitLabel.setText(tempFahr + " Fahrenheit");

只需复制此代码并将其粘贴到下面所示的convertButtonActionPerformed方法中:


*此图已经缩小以适应页面。

点击图像以查看其自然大小。*

完成温度转换代码后,应用程序现在已经完成。

步骤 4:运行应用程序

运行应用程序只是在 NetBeans IDE 中选择运行 -> 运行主项目的简单事情。第一次运行此应用程序时,会提示您设置CelsiusConverterGUI为此项目的主类。点击“确定”按钮,当程序编译完成后,您应该会看到应用程序在自己的窗口中运行。

恭喜!您已经完成了您的第一个 Swing 应用程序!

问题和练习:使用 NetBeans IDE 学习 Swing

原文:docs.oracle.com/javase/tutorial/uiswing/QandE/questions-learn.html

问题

  1. 在创建这个新项目时,我们取消了“创建主类”复选框的选择。为什么?
  2. _____ 包含了 Swing API 提供的所有组件。
  3. 设计区域的目的是什么?
  4. 解释源代码和设计标签之间的区别。
  5. 列举一些使用属性编辑器编辑对象的优势(与直接在源代码中编辑相比)。
  6. 这节课使用了三种不同类型的 Swing 对象。它们是什么?
  7. 描述在设计区域中设置两个组件宽度相同的过程。

练习

  1. 使用属性编辑器来改变这个应用程序的外观。尝试改变一些数值,看看你的改变有什么效果。

检查你的答案

教程:使用 Swing 组件

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

示例索引

本课程为您提供了使用 Swing 组件所需的背景信息,然后描述了每个 Swing 组件。它假定您已成功编译和运行了使用 Swing 组件的程序,并且熟悉基本的 Swing 概念。这些先决条件在开始使用 Swing 和使用 NetBeans IDE 学习 Swing 中有所涵盖。

使用顶层容器

讨论了如何使用JFrameJDialogJApplet类共享的功能——内容窗格、菜单栏和根窗格。还讨论了包含层次结构,指的是顶层容器包含的组件树。

JComponent 类

告诉你JComponent为其子类(几乎所有 Swing 组件)提供的功能,并提供如何利用这些功能的提示。本节以 API 表结束,描述了JComponent及其超类ContainerComponent定义的常用 API。

使用文本组件

描述了所有从JTextComponent继承的组件共享的功能和 API。如果您只是使用文本字段(格式化或非格式化)或文本区域,您可能不需要阅读本节。

如何…

按字母顺序列出如何使用每个 Swing 组件的部分。我们不希望您按顺序阅读这些部分。相反,我们建议在准备开始在自己的程序中使用 Swing 组件时阅读相关的“如何”部分。例如,如果您的程序需要一个框架、一个标签、一个按钮和一个颜色选择器,您应该阅读如何制作框架、如何使用标签、如何使用按钮和如何使用颜色选择器。

在 Swing 组件中使用 HTML

描述了如何通过使用 HTML 标签来改变 Swing 组件显示的文本的字体、颜色或其他格式。

使用模型

告诉您关于 Swing 模型架构。这种 Model-View-Controller(MVC)的变体意味着您可以(如果愿意)指定 Swing 组件的数据和状态如何存储和检索。其好处是能够在组件之间共享数据和状态,并大大提高显示大量数据的表格等组件的性能。

使用边框

边框非常方便,用于在组件的边缘周围绘制线条、标题和空白空间。(您可能已经注意到,本教程中的示例使用了许多边框。)本节告诉您如何向任何JComponent添加边框。

使用图标

许多 Swing 组件可以显示图标。通常,图标是作为ImageIcon类的实例实现的。

解决常见组件问题

本节讨论了常见组件相关问题的解决方案。

如果你对使用 JavaFX 创建 GUI 感兴趣,请参阅使用 JavaFX 图表使用 JavaFX UI 控件

使用顶级容器

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

正如我们之前提到的,Swing 提供了三个通常有用的顶级容器类:JFrameJDialogJApplet。在使用这些类时,您应该记住以下事实:

  • 要在屏幕上显示,每个 GUI 组件必须是包含层次结构的一部分。包含层次结构是一个组件树,其根是一个顶级容器。我们稍后会展示给你。
  • 每个 GUI 组件只能被包含一次。如果一个组件已经在一个容器中,并且您尝试将其添加到另一个容器中,该组件将从第一个容器中移除,然后添加到第二个容器中。
  • 每个顶级容器都有一个内容窗格,一般来说,内容窗格包含(直接或间接地)该顶级容器 GUI 中可见的组件。
  • 您可以选择向顶级容器添加一个菜单栏。按照惯例,菜单栏位于顶级容器内部,但在内容窗格之外。一些外观和感觉,如 Mac OS 外观和感觉,可以让您选择将菜单栏放在更适合外观和感觉的其他位置,例如屏幕顶部。

**注意:**虽然JInternalFrame模仿JFrame,但内部框架实际上不是顶级容器。


这是一个应用程序创建的框架的图片。框架包含一个绿色的菜单栏(没有菜单),在框架的内容窗格中有一个大的空白黄色标签。

您可以在TopLevelDemo.java中找到此示例的完整源代码。虽然示例在独立应用程序中使用了JFrame,但相同的概念也适用于JAppletJDialog

这是此示例 GUI 的包含层次结构:

如椭圆形所示,我们在这个图表中略去了一些细节。我们稍后会透露这些缺失的细节。这部分讨论以下主题:

  • 顶级容器和包含层次结构
  • 向内容窗格添加组件
  • 添加菜单栏
  • 根窗格(又名缺失的细节)

顶级容器和包含层次结构

使用 Swing 组件的每个程序至少有一个顶级容器。这个顶级容器是包含层次结构的根 - 包含所有出现在顶级容器内部的 Swing 组件的层次结构。

通常情况下,具有基于 Swing 的 GUI 的独立应用程序至少有一个以 JFrame 为根的包含层次结构。例如,如果一个应用程序有一个主窗口和两个对话框,则该应用程序有三个包含层次结构,因此有三个顶级容器。一个包含层次结构以 JFrame 为根,另外两个分别以 JDialog 对象为根。

一个基于 Swing 的小程序至少有一个包含层次结构,其中有一个由 JApplet 对象作为根。例如,弹出对话框的小程序有两个包含层次结构。浏览器窗口中的组件位于由 JApplet 对象作为根的包含层次结构中。对话框有一个由 JDialog 对象作为根的包含层次结构。

向内容窗格添加组件

以下是前面示例中使用的代码,用于获取框架的内容窗格并将黄色标签添加到其中:

frame.getContentPane().add(yellowLabel, BorderLayout.CENTER);

如代码所示,您可以通过调用 getContentPane 方法找到顶级容器的内容窗格。默认内容窗格是一个简单的中间容器,继承自 JComponent,并使用 BorderLayout 作为其布局管理器。

定制内容窗格很容易—例如设置布局管理器或添加边框。但是,有一个小问题。getContentPane 方法返回的是一个 Container 对象,而不是 JComponent 对象。这意味着如果您想利用内容窗格的 JComponent 功能,您需要要么对返回值进行类型转换,要么创建自己的组件作为内容窗格。我们的示例通常采用第二种方法,因为这样更清晰。我们有时采用的另一种方法是简单地向内容窗格添加一个定制组件,完全覆盖内容窗格。

请注意,JPanel 的默认布局管理器是 FlowLayout;您可能需要更改它。

要将组件设置为内容窗格,请使用顶级容器的 setContentPane 方法。例如:

//Create a panel and add components to it.
JPanel contentPane = new JPanel(new BorderLayout());
contentPane.setBorder(*someBorder*);
contentPane.add(*someComponent*, BorderLayout.CENTER);
contentPane.add(*anotherComponent*, BorderLayout.PAGE_END);
*topLevelContainer*.setContentPane(contentPane);

注意:

为方便起见,add 方法及其变体,removesetLayout 已被重写以根据需要转发到 contentPane。这意味着您可以编写

frame.add(child);

并且子组件将被添加到 contentPane

请注意,只有这三种方法可以实现这一点。这意味着 getLayout() 不会返回使用 setLayout() 设置的布局。


添加菜单栏

理论上,所有顶级容器都可以容纳菜单栏。然而,在实践中,菜单栏通常只出现在框架和小程序中。要向顶级容器添加菜单栏,请创建一个 JMenuBar 对象,填充它的菜单,然后调用 setJMenuBarTopLevelDemo 使用以下代码向其框架添加菜单栏:

frame.setJMenuBar(greenMenuBar);

欲了解更多关于实现菜单和菜单栏的信息,请参阅如何使用菜单。

根窗格

每个顶层容器依赖于一个名为根窗格的隐秘中间容器。根窗格管理内容窗格和菜单栏,以及其他几个容器。通常情况下,你不需要了解根窗格来使用 Swing 组件。然而,如果你需要拦截鼠标点击或在多个组件上绘制,你应该熟悉根窗格。

这里是根窗格为框架(以及每个其他顶层容器)提供的组件列表:

我们已经告诉过你关于内容窗格和可选菜单栏。根窗格添加的另外两个组件是分层窗格和玻璃窗格。分层窗格包含菜单栏和内容窗格,并且可以对其他组件进行 Z 轴排序。玻璃窗格通常用于拦截发生在顶层容器上的输入事件,并且还可以用于在多个组件上绘制。

更多详情,请参见如何使用根窗格。

JComponent 类

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

除了顶级容器之外,所有以"J"开头命名的 Swing 组件都是从JComponent类继承的。例如,JPanelJScrollPaneJButtonJTable都继承自JComponent。但是,JFrameJDialog不是因为它们实现了顶级容器。

JComponent类扩展了Container类,而Container类本身又扩展了Component类。Component类包括从提供布局提示到支持绘制和事件的所有内容。Container类支持向容器添加组件和对它们进行布局。本节的 API 表格总结了ComponentContainerJComponent最常用的方法。

JComponent 特性

JComponent类为其子类提供以下功能:

  • 工具提示
  • 绘制和边框
  • 应用程序范围内可插拔的外观和感觉
  • 自定义属性
  • 布局支持
  • 支持辅助功能
  • 拖放支持
  • 双缓冲
  • 键绑定

工具提示

通过使用setToolTipText方法指定一个字符串,您可以为组件的用户提供帮助。当光标停留在组件上时,指定的字符串将显示在靠近组件的小窗口中。更多信息请参见如何使用工具提示。

绘制和边框

setBorder方法允许您指定组件显示在边缘周围的边框。要绘制组件的内部,请重写paintComponent方法。有关详细信息,请参见如何使用边框和执行自定义绘制。

应用程序范围内可插拔的外观和感觉

在幕后,每个JComponent对象都有一个对应的ComponentUI对象,负责执行所有绘图、事件处理、大小确定等工作。使用哪个ComponentUI对象取决于当前的外观和感觉,您可以使用UIManager.setLookAndFeel方法进行设置。详细信息请参见如何设置外观和感觉。

自定义属性

您可以将一个或多个属性(名称/对象对)与任何JComponent关联。例如,布局管理器可以使用属性将约束对象与其管理的每个JComponent关联起来。您可以使用putClientPropertygetClientProperty方法来放置和获取属性。有关属性的一般信息,请参阅属性。

布局支持

虽然Component类提供了布局提示方法,如getPreferredSizegetAlignmentX,但除了创建子类并覆盖这些方法之外,它并没有提供任何设置这些布局提示的方法。为了提供另一种设置布局提示的方法,JComponent类添加了设置器方法 - setMinimumSizesetMaximumSizesetAlignmentXsetAlignmentY。详情请参阅在容器中布局组件。

辅助功能支持

JComponent类提供了 API 和基本功能,以帮助辅助技术(如屏幕阅读器)从 Swing 组件中获取信息。有关辅助功能的更多信息,请参阅如何支持辅助技术。

拖放支持

JComponent类提供了 API 来设置组件的传输处理程序,这是 Swing 拖放支持的基础。详情请参阅拖放简介。

双缓冲

双缓冲平滑屏幕绘制。详情请参阅执行自定义绘制。

按键绑定

此功能使组件在用户按下键盘上的键时做出反应。例如,在许多外观中,当按钮获得焦点时,按下空格键等同于鼠标单击按钮。外观会自动设置按下和释放空格键之间的绑定以及按钮上的结果效果。有关按键绑定的更多信息,请参阅如何使用按键绑定。

JComponent API

JComponent类提供了许多新方法,并继承了许多方法从ComponentContainer。以下表格总结了我们最常使用的方法。

  • 自定义组件外观
  • 设置和获取组件状态
  • 处理事件
  • 绘制组件
  • 处理包含关系
  • 组件布局
  • 获取大小和位置信息
  • 指定绝对大小和位置

自定义组件外观

方法 目的
void setBorder(Border) Border getBorder() 设置或获取组件的边框。详情请参阅如何使用边框。
void setForeground(Color) void setBackground(Color) 为组件设置前景色或背景色。前景色通常是组件中绘制文本所使用的颜色。背景色(不出所料)是组件背景区域的颜色,假设组件是不透明的。
Color getForeground() Color getBackground() 获取组件的前景色或背景色。
void setOpaque(boolean) boolean isOpaque() 设置或获取组件是否是不透明的。不透明组件会用其背景颜色填充其背景。
void setFont(Font) Font getFont() 设置或获取组件的字体。如果组件没有设置字体,则返回其父组件的字体。
void setCursor(Cursor) Cursor getCursor() 设置或获取显示在组件及其所有包含组件上的光标(除了具有自己设置光标的子组件)。示例:aPanel.setCursor( Cursor.getPredefinedCursor( Cursor.WAIT_CURSOR));

设置和获取组件状态

方法 目的

| void setComponentPopupMenu(JPopupMenu) | 为这个JComponent设置JPopupMenu。UI 负责注册绑定并添加必要的监听器,以便在适当的时候显示JPopupMenuJPopupMenu何时显示取决于外观和感觉:有些可能在鼠标事件上显示它,有些可能启用键绑定。

如果popup为 null,并且getInheritsPopupMenu返回true,那么getComponentPopupMenu将被委托给父组件。这提供了一种让所有子组件继承父组件的popupmenu的方法。

void setTransferHandler(TransferHandler) TransferHandler getTransferHandler() 设置或移除transferHandler属性。TransferHandler支持通过剪切、复制或粘贴到/从剪贴板以及拖放来交换数据。有关更多详细信息,请参阅拖放简介。
void setToolTipText(String) 设置要显示在工具提示中的文本。有关更多信息,请参阅如何使用工具提示。
void setName(String) String getName() 设置或获取组件的名称。当您需要将文本与不显示文本的组件关联时,这可能很有用。
boolean isShowing() 确定组件是否显示在屏幕上。这意味着组件必须可见,并且必须在一个可见且显示的容器中。
void setEnabled(boolean) boolean isEnabled() 设置或获取组件是否启用。启用的组件可以响应用户输入并生成事件。
void setVisible(boolean) boolean isVisible() 设置或获取组件是否可见。组件最初是可见的,顶层组件除外。

处理事件

(详细信息请参阅编写事件侦听器)

方法 目的

| void addHierarchyListener(hierarchyListener l) void removeHierarchyListener(hierarchyListener l)

| 设置组件 Z 轴顺序(component comp, int index) | 将指定的组件移动到容器中指定的 Z 轴顺序索引位置。

如果组件是其他容器的子组件,则在添加到此容器之前,它将从该容器中移除。此方法与java.awt.Container.add(Component, int)之间的重要区别在于,此方法在将组件从其先前的容器中移除时,除非必要且允许底层本机窗口系统,否则不会调用组件的removeNotify。这样,如果组件具有键盘焦点,则在移动到新位置时会保持焦点。

注意: Z 轴顺序决定了组件绘制的顺序。具有最高 Z 轴顺序的组件首先绘制,具有最低 Z 轴顺序的组件最后绘制。在组件重叠的情况下,具有较低 Z 轴顺序的组件会覆盖具有较高 Z 轴顺序的组件。 |

获取组件 Z 轴顺序(component comp) 返回容器内组件的 Z 轴顺序索引。组件在 Z 轴顺序层次结构中越高,其索引越低。具有最低 Z 轴顺序索引的组件最后绘制,位于所有其他子组件之上。

绘画组件

(详见执行自定义绘画)

方法 目的
void 重绘() void 重绘(int, int, int, int) 请求重绘组件的全部或部分。四个int参数指定要绘制的矩形的边界(xy、宽度、高度,按顺序)。
void 重绘(Rectangle) 请求重绘组件内指定区域。
void 重新验证() 请求重新布局组件及其受影响的容器。通常情况下,除非在组件可见后显式更改组件的大小/对齐提示或在其可见后更改包含层次结构,否则不应调用此方法。在revalidate后始终调用repaint
void 绘制组件(Graphics) 绘制组件。重写此方法以实现自定义组件的绘制。

处理包含层次结构

(查看使用顶层容器获取更多信息)

方法 目的

| 添加组件(Component) 添加组件(Component, int)

void 添加(Component, Object) | 将指定组件添加到此容器。此方法的单参数版本将组件添加到容器的末尾。当存在时,int参数指示新组件在容器中的位置。当存在时,Object参数为当前布局管理器提供布局约束。 |

| void 移除(int) void 移除(Component)

void 移除全部() | 从此容器中移除一个或全部组件。当存在时,int参数指示要移除的组件在容器中的位置。 |

获取根窗格() 获取包含组件的根窗格。
获取顶层祖先容器 获取组件的最顶层容器 — 一个WindowApplet,或者如果组件尚未添加到任何容器中则为 null。
获取父容器() 获取组件的直接容器。
获取组件数量() 获取此容器中的组件数量。
获取组件(int) 获取组件(Component[]) 获取此容器中的一个或所有组件。int参数表示要获取的组件的位置。
获取组件 Z 顺序索引(int) 获取组件 Z 顺序索引(Component[]) 返回容器内组件的 Z 顺序索引。组件在 Z 顺序层次结构中越高,其索引越低。具有最低 Z 顺序索引的组件最后绘制,位于所有其他子组件之上。

组件布局

(查看在容器内布局组件获取更多信息)

方法 目的

| 设置首选大小(Dimension) 设置最大大小(Dimension)

设置最小尺寸(Dimension) | 设置组件的首选、最大或最小尺寸,以像素为单位。首选尺寸表示组件的最佳尺寸。组件的大小不应大于其最大尺寸,也不应小于其最小尺寸。请注意,这些仅是提示,可能会被某些布局管理器忽略。 |

| 获取首选大小(Dimension) 获取最大大小(Dimension)

获取最小尺寸(Dimension) | 获取组件的首选、最大或最小尺寸,以像素为单位。许多 JComponent 类都有设置器和获取器方法。对于那些没有相应设置器方法的非JComponent子类,可以通过创建子类并覆盖这些方法来设置组件的首选、最大或最小尺寸。 |

void setAlignmentX(float) void setAlignmentY(float) 设置组件沿着*x-y-*轴的对齐方式。这些值表示组件希望相对于其他组件对齐的方式。该值应为介于 0 和 1 之间的数字,其中 0 表示沿着原点对齐,1 表示与原点最远对齐,0.5 表示居中,依此类推。请注意,这仅仅是提示,某些布局管理器可能会忽略这些值。
float getAlignmentX() float getAlignmentY() 获取组件沿着*x-y-*轴的对齐方式。对于非JComponent子类,没有相应的设置方法,您可以通过创建子类并重写这些方法来设置组件的对齐方式。
void setLayout(LayoutManager) LayoutManager getLayout() 设置或获取组件的布局管理器。布局管理器负责调整和定位容器中的组件。
void applyComponentOrientation(ComponentOrientation) void setComponentOrientation(ComponentOrientation) 设置此容器及其中包含的所有组件的ComponentOrientation属性。有关更多信息,请参见设置容器的方向。

获取大小和位置信息

方法 目的
int getWidth() int getHeight() 获取组件当前以像素为单位的宽度或高度。
Dimension getSize() Dimension getSize(Dimension) 获取组件当前以像素为单位的大小。在使用此方法的单参数版本时,调用者负责创建返回结果的Dimension实例。
int getX() int getY() 获取组件原点相对于父级左上角以像素为单位的当前xy坐标。
Rectangle getBounds() Rectangle getBounds(Rectangle) 获取以像素为单位的组件边界。边界指定组件的宽度、高度和相对于其父级的原点。在使用此方法的单参数版本时,调用者负责创建返回结果的Rectangle实例。

| Point getLocation() Point getLocation(Point)

获取组件相对于父级左上角以像素为单位的当前位置。在使用getLocation方法的单参数版本时,调用者负责创建返回结果的Point实例。
Point getLocationOnScreen()
Insets getInsets()

指定绝对大小和位置

(查看不使用布局管理器(绝对定位)获取更多信息)

方法 目的
void setLocation(int, int) void setLocation(Point) 设置组件的位置,以像素为单位,相对于父级的左上角。两个int参数按顺序指定xy。在不使用布局管理器时,使用这些方法来定位组件。
void setSize(int, int) void setSize(Dimension) 设置以像素为单位的组件大小。两个int参数按顺序指定宽度和高度。在不使用布局管理器时,使用这些方法来调整组件大小。
void setBounds(int, int, int, int) void setBounds(Rectangle) 设置组件相对于父组件左上角的大小和位置(以像素为单位)。四个int参数按顺序指定xy、宽度和高度。在不使用布局管理器时,使用这些方法来定位和调整组件的大小。

Java 中文官方教程 2022 版(十四)(4)https://developer.aliyun.com/article/1486382

相关文章
|
9天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)
【4月更文挑战第21天】本文介绍了Selenium中处理特殊测试场景的方法,如鼠标悬停。Selenium的Actions类提供了鼠标悬停功能,用于模拟用户在网页元素上的悬停行为。文中通过实例展示了如何使用Actions悬停并展开下拉菜单,以及在搜索时选择自动补全的字段。代码示例包括了打开百度首页,悬停在“更多”元素上显示下拉菜单并点击“音乐”,以及在搜索框输入关键词并自动补全的过程。
33 0
|
2天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)
【4月更文挑战第28天】本文简要介绍了自动化测试的实战应用,通过一个在线问卷调查(<https://www.sojump.com/m/2792226.aspx/>)为例,展示了如何遍历并点击问卷中的选项。测试思路包括找到单选和多选按钮的共性以定位元素,然后使用for循环进行点击操作。代码设计方面,提供了Java+Selenium的示例代码,通过WebDriver实现自动答题。运行代码后,可以看到控制台输出和浏览器的相应动作。文章最后做了简单的小结,强调了本次实践是对之前单选多选操作的巩固。
10 0
|
2天前
|
Java 测试技术 项目管理
Java基础教程(22)-构建工具Maven的基本使用
【4月更文挑战第22天】Maven是Java项目管理及构建工具,简化构建、测试、打包和部署等任务。遵循约定优于配置原则,核心是`pom.xml`配置文件,用于管理依赖和项目信息。安装涉及下载、解压、配置环境变量。在IDEA中使用Maven创建项目,通过`pom.xml`添加依赖和管理版本。常用命令包括`clean`、`compile`、`test`、`package`、`install`和`deploy`。IDEA支持直接执行这些命令。
|
2天前
|
NoSQL Java 关系型数据库
Java基础教程(21)-Java连接MongoDB
【4月更文挑战第21天】MongoDB是开源的NoSQL数据库,强调高性能和灵活性。Java应用通过MongoDB Java驱动与之交互,涉及MongoClient、MongoDatabase、MongoCollection和Document等组件。连接MongoDB的步骤包括:配置连接字符串、创建MongoClient、选择数据库和集合。伪代码示例展示了如何建立连接、插入和查询数据。
|
3天前
|
存储 前端开发 测试技术
《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
【4月更文挑战第27天】本文介绍了使用Java+Selenium进行Web自动化测试时,如何遍历和操作多选按钮的方法。文章分为两个部分,首先是一个本地HTML页面的示例,展示了多选按钮的HTML代码和页面效果,并详细解释了遍历多选按钮的思路:找到所有多选按钮的共同点,通过定位这些元素并放入list容器中,然后使用for循环遍历并操作。 第二部分介绍了在JQueryUI网站上的实战,给出了被测网址,展示了代码设计,同样使用了findElements()方法获取所有多选按钮并存储到list中,然后遍历并进行点击操作。最后,文章对整个过程进行了小结,并推荐了作者的其他自动化测试教程资源。
11 0
|
3天前
|
Java 关系型数据库 MySQL
Java基础教程(20)-Java连接mysql数据库CURD
【4月更文挑战第19天】MySQL是流行的关系型数据库管理系统,支持SQL语法。在IDEA中加载jar包到项目类路径:右击项目,选择“Open Module Settings”,添加库文件。使用JDBC连接MySQL,首先下载JDBC驱动,然后通过`Class.forName()`加载驱动,`DriverManager.getConnection()`建立连接。执行CRUD操作,例如创建表、插入数据和查询,使用`Statement`或`PreparedStatement`,并确保正确关闭数据库资源。
|
4天前
|
设计模式 算法 Java
Java基础教程(19)-设计模式简述
【4月更文挑战第19天】设计模式是软件设计中反复使用的代码设计经验,旨在提升代码的可重用性、可扩展性和可维护性。23种模式分为创建型、结构型和行为型三类。创建型模式如工厂方法、抽象工厂、建造者、原型和单例,关注对象创建与使用的分离。结构型模式涉及对象组合,如适配器、装饰器、外观等,增强结构灵活性。行为型模式专注于对象间职责分配和算法合作,包括责任链、命令、观察者等。设计模式提供标准化解决方案,促进代码交流和复用。
|
4天前
|
前端开发 测试技术 Python
《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)
【4月更文挑战第25天】本文介绍了自动化测试中如何处理单选和多选按钮的操作,包括它们的定义、HTML代码示例以及如何判断和操作这些元素。文章通过一个简单的HTML页面展示了单选和多选框的示例,并提供了Java+Selenium实现的代码示例,演示了如何检查单选框是否选中以及如何进行全选操作。
11 0
|
5天前
|
网络协议 Java 网络架构
Java基础教程(18)-Java中的网络编程
【4月更文挑战第18天】Java网络编程简化了底层协议处理,利用Java标准库接口进行TCP/IP通信。TCP协议提供可靠传输,常用于HTTP、SMTP等协议;UDP协议则更高效但不保证可靠性。在TCP编程中,ServerSocket用于监听客户端连接,Socket实现双进程间通信。UDP编程中,DatagramSocket处理无连接的数据报文。HTTP编程可以通过HttpURLConnection发送请求并接收响应。
|
6天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
【4月更文挑战第24天】本文介绍了在自动化测试中处理HTML下拉选择(select)的方法。使用Selenium的Select类,可以通过index、value或visible text三种方式选择选项,并提供了相应的取消选择的方法。此外,文章还提供了一个示例HTML页面(select.html)和相关代码实战,演示了如何使用Selenium进行选择和取消选择操作。最后,文章提到了现代网页中类似下拉框的新设计,如12306网站的出发地选择,并给出了相应的代码示例,展示了如何定位并选择特定选项。
16 0