JavaGUI 12 Icon && ImageIcon

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);
    }

    @Override
    public int getIconWidth() {
        return this.width;
    }

    @Override
    public 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();

    }

    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        g.fillOval(x, y, width, height);
    }

    @Override
    public int getIconWidth() {
        return this.width;
    }

    @Override
    public 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();
    }

}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值