当前位置: 代码迷 >> 综合 >> JavaGUI 12 Icon ImageIcon
  详细解决方案

JavaGUI 12 Icon ImageIcon

热度:46   发布时间:2023-11-24 13:59:16.0

5.3 Icon && ImageIcon


5.3.1 Icon 图标

  1. Icon 是一个接口,可以直接拿来用!也可以 implements 的实现,进行方法 重写。来 写一些 自己需要的代码和功能。
  2. Icon 里面的方法,会有 基于 AWT 的东西。所以需要 导入 AWT 类库。
  3. 一般也是 和 JFrame 联用。
  • 三个方法
@Override
//画图标public void paintIcon(Component c, Graphics g, int x, int y) {
    g.fillOval(x, y, width, height);}@Overridepublic int getIconWidth() {
    return this.width;}@Overridepublic int getIconHeight() {
    return this.height;}

Ico 这个接口,不属于 JFrame。所以无法 直接 画在 JFrame 窗体上。

但是 JFrame 的组件,在 创建的时候,有一个参数是 可以接收 Ico 类型的。证明 JFrame 的组件 是 通过这种方式 与 Ico 接口连用的。

  • 图标标签(实例代码)
package com.muquanyu.lesson04;import javax.swing.*;
import java.awt.*;//图标,需要实现类
public class IconDemo extends JFrame implements Icon {
    private int width;private int height;public IconDemo() {
    }public IconDemo(int width,int height) {
    this.width = width;this.height = height;}public void Init(){
    IconDemo iconDemo = new IconDemo(15, 15);//图标放在标签,也可以放在按钮上!//图标是和其它东西 组合的。final JLabel label = new JLabel("icoTest", iconDemo, SwingConstants.CENTER);Container container = this.getContentPane();container.add(label);this.setVisible(true);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {
    IconDemo iconDemo = new IconDemo();}@Overridepublic void paintIcon(Component c, Graphics g, int x, int y) {
    g.fillOval(x, y, width, height);}@Overridepublic int getIconWidth() {
    return this.width;}@Overridepublic int getIconHeight() {
    return this.height;}
}

final JLabel label = new JLabel(“icoTest”, iconDemo, SwingConstants.CENTER);

第二个参数就是 我们创建的 icon,因为 IconDemo 是 Icon 的实现,所以 IconDemo 可以代表 Icon,画出来的图标,就可以 添加到 新创建的 组件上!


5.3.2 ImageIcon 图标

ImageIcon 是一个普通的类,它 实现了Icon的接口,Serializable、Accessible 这些接口,是一个 Icon 的升级版本!在这里插入图片描述

ImageIcon 最比Icon 突出的地方就是 可以画 图片,而且还可以 规定图片的大小来作为图标。

  • 获取 图片路径
URL url = ImageIconDemo.class.getResource("头像.jpg");

这是获取 当前目录下的 图片路径!

  • 直接创建 ImageIcon 对象
ImageIcon imageIcon = new ImageIcon(url);

这个 ImageIcon 对象 依赖于 图片文件的路径

  • Image 设置图像大小
Image img = imageIcon.getImage().getScaledInstance(100,100,1);

getScaledInstance(宽度,高度,标识符); 是用来生成一个 新的 图像数据的。

  • 设置标签的Icon
JLabel label = new JLabel("ImageIcon");
label.setIcon(imageIcon);
  • 代码展示
package com.muquanyu.lesson04;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class ImageIconDemo extends JFrame {
    // IO 流public ImageIconDemo() {
    //获取文件的路径 当前路径下的URL url = ImageIconDemo.class.getResource("头像.jpg");setSize(500,500);ImageIcon imageIcon = new ImageIcon(url);Image img = imageIcon.getImage().getScaledInstance(100,100,1);imageIcon.setImage(img);//创建标签JLabel label = new JLabel("ImageIcon");label.setIcon(imageIcon);label.setHorizontalAlignment(SwingConstants.CENTER);Container container = getContentPane();container.add(label);setVisible(true);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {
    ImageIconDemo imageIconDemo = new ImageIconDemo();}}

在这里插入图片描述

  相关解决方案