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

相关文章
|
8月前
|
Java 关系型数据库 数据库
Java 项目实战教程从基础到进阶实战案例分析详解
本文介绍了多个Java项目实战案例,涵盖企业级管理系统、电商平台、在线书店及新手小项目,结合Spring Boot、Spring Cloud、MyBatis等主流技术,通过实际应用场景帮助开发者掌握Java项目开发的核心技能,适合从基础到进阶的学习与实践。
1131 3
|
7月前
|
安全 Java
Java之泛型使用教程
Java之泛型使用教程
441 10
|
6月前
|
Oracle Java 关系型数据库
Java 简单教程
Java是跨平台、面向对象的编程语言,广泛用于企业开发、Android应用等。本教程涵盖环境搭建、基础语法、流程控制、面向对象、集合与异常处理,助你快速入门并编写简单程序,为进一步深入学习打下坚实基础。
459 0
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
719 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
9月前
|
缓存 安全 Java
Java 并发新特性实战教程之核心特性详解与项目实战
本教程深入解析Java 8至Java 19并发编程新特性,涵盖CompletableFuture异步编程、StampedLock读写锁、Flow API响应式流、VarHandle内存访问及结构化并发等核心技术。结合电商订单处理、缓存系统、实时数据流、高性能计数器与用户资料聚合等实战案例,帮助开发者高效构建高并发、低延迟、易维护的Java应用。适合中高级Java开发者提升并发编程能力。
388 0
|
10月前
|
Oracle Java 关系型数据库
java 编程基础入门级超级完整版教程详解
这份文档是针对Java编程入门学习者的超级完整版教程,涵盖了从环境搭建到实际项目应用的全方位内容。首先介绍了Java的基本概念与开发环境配置方法,随后深入讲解了基础语法、控制流程、面向对象编程的核心思想,并配以具体代码示例。接着探讨了常用类库与API的应用,如字符串操作、集合框架及文件处理等。最后通过一个学生成绩管理系统的实例,帮助读者将理论知识应用于实践。此外,还提供了进阶学习建议,引导学员逐步掌握更复杂的Java技术。适合初学者系统性学习Java编程。资源地址:[点击访问](https://pan.quark.cn/s/14fcf913bae6)。
1121 2
|
消息中间件 Java 数据库
自研Java框架 Sunrays-Framework使用教程「博客之星」
### Sunrays-Framework:助力高效开发的Java微服务框架 **Sunrays-Framework** 是一款基于 Spring Boot 构建的高效微服务开发框架,深度融合了 Spring Cloud 生态中的核心技术组件。它旨在简化数据访问、缓存管理、消息队列、文件存储等常见开发任务,帮助开发者快速构建高质量的企业级应用。 #### 核心功能 - **MyBatis-Plus**:简化数据访问层开发,提供强大的 CRUD 操作和分页功能。 - **Redis**:实现高性能缓存和分布式锁,提升系统响应速度。 - **RabbitMQ**:可靠的消息队列支持,适用于异步
自研Java框架 Sunrays-Framework使用教程「博客之星」
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
13857 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
913 26
|
Java 数据库连接 数据处理
探究Java异常处理【保姆级教程】
Java 异常处理是确保程序稳健运行的关键机制。它通过捕获和处理运行时错误,避免程序崩溃。Java 的异常体系以 `Throwable` 为基础,分为 `Error` 和 `Exception`。前者表示严重错误,后者可细分为受检和非受检异常。常见的异常处理方式包括 `try-catch-finally`、`throws` 和 `throw` 关键字。此外,还可以自定义异常类以满足特定需求。最佳实践包括捕获具体异常、合理使用 `finally` 块和谨慎抛出异常。掌握这些技巧能显著提升程序的健壮性和可靠性。
306 4