Java教程是针对JDK 8编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改,了解Java SE 9及后续版本中更新的语言功能的摘要。
请参阅JDK发行说明,了解有关所有JDK版本的新功能、增强功能以及已删除或不推荐使用的选项的信息。
除顶级容器外,所有以“J”开头的Swing组件都是从JComponent类继承的。例如,JPanel、JScrollPane、JButton和JTable都继承自JComponent。但是,JFrame和JDialog不继承自JComponent,因为它们实现了顶级容器。
JComponent类继承自Container类,而Container类本身继承自Component类。Component类包括了提供布局提示和支持绘制和事件的所有内容。Container类支持向容器添加组件和布局。本节的API表总结了Component、Container和JComponent的最常用方法。API表
JComponent类为其子类提供以下功能:
setToolTipText
方法指定一个字符串,您可以为组件的用户提供帮助。当光标停留在组件上时,指定的字符串将显示在靠近组件的一个小窗口中。有关更多信息,请参阅如何使用工具提示。
setBorder
方法允许您指定组件显示在其边缘周围的边框。要绘制组件的内部,可以重写paintComponent
方法。有关详细信息,请参阅如何使用边框和执行自定义绘制。
JComponent
对象都有一个对应的ComponentUI
对象,用于执行该JComponent
的所有绘制、事件处理、大小确定等操作。使用哪个ComponentUI
对象取决于当前的外观和感觉,可以使用UIManager.setLookAndFeel
方法设置。有关详细信息,请参阅如何设置外观和感觉。
JComponent
相关联。例如,布局管理器可以使用属性将约束对象与其管理的每个JComponent
关联起来。您可以使用putClientProperty
和getClientProperty
方法来设置和获取属性。有关属性的一般信息,请参阅属性。
Component
类提供了一些布局提示方法,如getPreferredSize
和getAlignmentX
,但它没有提供任何设置这些布局提示的方法,除非创建一个子类并重写这些方法。为了给您另一种设置布局提示的方式,JComponent
类添加了setter方法 - setMinimumSize
, setMaximumSize
, setAlignmentX
和setAlignmentY
。有关更多信息,请参阅在容器内布置组件。
JComponent
类提供API和基本功能,以帮助辅助技术(如屏幕阅读器)从Swing组件获取信息。有关辅助功能的更多信息,请参阅如何支持辅助技术。
JComponent
类提供了设置组件传输处理程序的API,这是Swing拖放支持的基础。详情请参见拖放入门。
JComponent
类提供了许多新方法,并继承了Component
和Container
的许多方法。以下表格总结了我们最常用的方法。
方法 | 目的 |
---|---|
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)); |
JComponent
JPopupMenu
JPopupMenu
JPopupMenu
popup
getInheritsPopupMenu
true
getComponentPopupMenu
popupmenu
void setTransferHandler(TransferHandler)
transferHandler
TransferHandler
DnD简介void setToolTipText(String)如何使用工具提示void setName(String)
int
xyComponent getComponentAt(int, int)
Component.contains()
Component setComponentZOrder(component comp, int index)
java.awt.Container.add(Component, int)
removeNotify
方法 | 目的 |
---|---|
void repaint() void repaint(int, int, int, int) |
请求重绘组件的全部或部分区域。四个int 参数指定要绘制的矩形的边界(按照x、y、宽度、高度的顺序)。 |
void repaint(Rectangle) | 请求重绘组件内指定的区域。 |
void revalidate() | 请求重新布局组件及其受影响的容器。一般情况下不需要调用此方法,除非在组件可见后显式更改组件的大小/对齐提示或在容器层次结构可见后更改容器层次结构。在调用revalidate 后始终调用repaint 。 |
void paintComponent(Graphics) | 绘制组件。重写此方法以实现自定义组件的绘制。 |
JComponent
void setAlignmentX(float)
JComponent
void setLayout(LayoutManager)
ComponentOrientation
设置容器的方向
方法 | 目的 |
---|---|
int getWidth() int getHeight() |
获取组件当前的宽度或高度,以像素为单位。 |
Dimension getSize() Dimension getSize(Dimension) |
获取组件当前的大小,以像素为单位。在使用一参数版本的方法时,调用者负责创建返回结果的 Dimension 实例。 |
int getX() int getY() |
获取组件相对于父组件左上角的当前 x 或 y 坐标,以像素为单位。 |
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 参数按顺序指定 x 和 y。当您不使用布局管理器时,使用这些方法来定位组件。 |
void setSize(int, int) void setSize(Dimension) |
设置组件的像素大小。两个 int 参数按顺序指定宽度和高度。当您不使用布局管理器时,使用这些方法来设置组件的大小。 |
void setBounds(int, int, int, int) void setBounds(Rectangle) |
设置组件相对于父组件左上角的像素大小和位置。四个 int 参数按顺序指定 x、y、宽度和高度。当您不使用布局管理器时,使用这些方法来定位和设置组件的大小。 |