在本教程中,我们将使用ImageIcon
。 我们将绘制一个图标,缩放一个图标,创建一个自定义图标,并将图标放入各种 Swing 组件中。
ImageIcon
Icon
是固定尺寸的小图片,通常用于装饰组件。 ImageIcon
是Icon
界面的实现,可从图像绘制图标。 可以从 URL,文件名或字节数组创建图像。
Icon's
paintIcon()
方法在指定位置绘制图标。
ImageIcon
构造函数
ImageIcon
具有多个构造函数,包括:
ImageIcon(byte[] imageData)
-从字节数组创建ImageIcon
。ImageIcon(Image image
)—从图像对象创建ImageIcon
。ImageIcon(String filename)
-创建一个ImageIcon
指定的文件。ImageIcon(URL location)
-从指定的 URL 创建一个ImageIcon
。
ImageIcon
可以处理 PNG,JPEG 和 GIF 图像。 如果要使用 BMP 或 ICO 图像,可以使用 image4j 库。
绘制图标
在第一个示例中,我们将在面板上绘制一个图标。
PaintingIconEx.java
该示例将文件系统中的图像加载到ImageIcon
中并将其绘制在JPanel
组件上。
我们将 JPG 图像加载到ImageIcon
中。 该图像位于项目根目录中。
在initPanel()
方法中,我们使用getIconWidth()
和getIconHeight()
方法确定图标的宽度和高度。 我们设置面板的首选大小以匹配图标大小。
在paintComponent()
方法中,我们使用paintIcon()
方法在面板上绘制图标。
Figure: Painting icon
缩放图像
以下示例显示了缩放图像的简单方法。
ImageIconScaleEx.java
窗口上显示了两个图像:原始图像及其旁边的缩放图像。
我们将 PNG 图像读取到ImageIcon
中。 该图像位于项目根目录中。
我们使用getIconWidth()
和getIconHeight()
方法获得原始图像的宽度和高度。
我们将图标的Image
,其 with 和 height 传递给scaleImage()
方法,在其中执行缩放操作。
getScaledInstance()
创建Image
的缩放版本。 我们使用Image.SCALE_SMOOTH
缩放操作,该操作对图像平滑度的优先级高于缩放速度。
我们从Image
创建一个ImageIcon
,并将其传递给JLabel
组件。
Figure: Scaling image
自定义图标
Swing 绘画 API 也可以用于创建自定义图标。 图形上下文将传递给paintIcon()
方法。
CustomIconEx.java
该示例创建一个缺少的自定义图标,并在带有JLabel
的窗口上显示该图标。
要创建自定义图标,我们实现Icon
界面。
我们重写getIconWidth()
和getIconHeight()
方法,它们确定图标的大小。
我们覆盖了paintIcon()
方法,在该方法中绘制了图标。 Graphics
对象提供了许多绘制 2D 形状并获取有关应用图形环境的信息的方法。
在doDrawing()
方法内部,我们绘制了图标。 该过程与paintComponent()
方法中的绘制相同。 Graphics2D
类扩展了Graphics
类,以提供对几何,坐标转换,颜色管理和文本布局的更复杂的控制。
我们有一个自定义的MyLabel
组件。 我们将其设为不透明,即标签具有背景。
图标设置为标签组件。
Figure: Missing custom icon
ImageIcon
按钮
可以将ImageIcons
放置在JButton
组件上。
ImageIconButtonsEx.java
我们有三个按钮。 它们每个都显示一个ImageIcon
。
创建了三个ImageIcons
。 我们将文件名传递给每个构造函数。 PNG 文件位于项目根目录中。
JButton
组件接受ImageIcon
作为参数。
Figure: Image buttons
JFrame
图标
JFrame
组件可以在其标题栏中显示一个图标。 它显示在标题栏的左侧。
FrameIconEx.java
web.png
是一个很小的 22x22px 图像文件。
我们从位于项目根目录中的 PNG 文件创建一个ImageIcon
。
setIconImage()
设置要显示为该窗口图标的图像。 getImage()
返回图标的Image
。
Figure: Icon
JLabel
中的ImageIcon
在下面的示例中,我们将ImageIcons
放入JLabel
组件中。
ImageIconLabelEx.java
项目根目录中有五个 PNG 文件。 它们显示在JLabel
组件的窗口中。
JLabel
具有一个构造函数,该构造函数将ImageIcon
作为参数。
Figure: Icons in labels
JTabbedPane
中的ImageIcon
JTabbedPane
是 Swing 组件,允许用户通过单击选项卡在一组组件之间切换。 这些选项卡可以包含ImageIcons
。
ImageIconTabbedPaneEx
该示例在JTabbedPane
组件的选项卡中显示ImageIcons
。
ImageIcon
已创建。
JTabbedPane
已创建。
addTab()
方法的第二个参数是ImageIcon
。
Figure: JTabbedPane icons
本教程专门针对 Java ImageIcon
。