16.Icon图标与ImageIcon 图片 标签

发布时间 2023-08-10 21:57:34作者: 被占用的小海海

package GUI;

import javax.swing.*;
import java.awt.*;

// 图标Icon,进一步学习,可以放在label上,也可以放在按钮上
public class Test16_Icon extends JFrame implements Icon{
    private int width,height;
    public Test16_Icon(){};
    public Test16_Icon(int width,int height){
        this.width=width;
        this.height=height;
    }
    public void init(){
        Test16_Icon test16Icon = new Test16_Icon(150, 150);
        setSize(500,500);
        setVisible(true);
        Container container =getContentPane();
        JLabel label = new JLabel("zhan",test16Icon,SwingConstants.CENTER);  // 标签的其他表示形式
        container.add(label);

    }

    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        g.fillOval(x,y,width,height);  // 椭圆,w,h是包裹住椭圆的矩形大小

    }

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

    @Override
    public int getIconHeight() {
        return height;
    }

    public static void main(String[] args) {
        new Test16_Icon().init();
    }



}

package GUI;

import javax.swing.*;
import java.awt.*;
import java.net.URL;

// 图片标签
public class Test16_ImageIcon extends JFrame{
    public Test16_ImageIcon(){
        // 获取图片 地址
        URL url = Test16_ImageIcon.class.getResource("piture.png"); //  获得同一级别下的资源
        ImageIcon imageIcon = new ImageIcon(url);  // ImageIcon 是一个图片类
        JLabel imageLabel = new JLabel("ImageLabel",imageIcon ,0);  // 也是标签
        
        Container contentPane = getContentPane();
        contentPane.add(imageLabel);


        setSize(500,500);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


    }

    public static void main(String[] args) {
        new Test16_ImageIcon();
    }
}