IT干货网

给组件添加图标

developer 2022年03月12日 编程设计 139 0

给组件添加图标

Frame窗口中,button,label这些组件都可以添加图标,图标有两种创造方式,一种是代码绘制,另一种是选用现成的图片。

添加绘制图标

以下代码展示如何给一个label添加绘制图标:

package com.cxf.gui.icon; 
 
import javax.swing.*; 
import java.awt.*; 
 
public class TestForIcon { 
    public static void main(String[] args) { 
        new Myicon().init(); 
    } 
} 
 
class Myicon extends JFrame implements Icon{ //two elements are mixed 
    private  int w; 
    private  int h; 
    public Myicon(){} 
    public Myicon(int width, int height){ 
        w = width; 
        h = height; 
    } 
    public void init(){ 
        setVisible(true); 
        setBounds(200,200,400,300); 
        getContentPane().add(new JLabel("icon on it",new Myicon(30,30),SwingConstants.CENTER)); 
    } 
 
    @Override 
    public void paintIcon(Component c, Graphics g, int x, int y) { 
        g.fillOval(x,y,w,h); 
    } 
 
    @Override 
    public int getIconWidth() { 
        return w; 
    } 
 
    @Override 
    public int getIconHeight() { 
        return h; 
    } 
 
} 
 

输出结果:

以上代码中,main函数里的new Myicon用来创建窗口,Myicon类里的new Myicon用来创建图标。

所以此处的Myicon虽然只是一个类,其实有两种用途,这是因为它既继承了Jframe类,又实现了Icon接口

添加图片图标

以下代码展示如何给一个label添加图片图标:

package com.cxf.gui.icon2; 
 
import javax.swing.*; 
import java.net.URL; 
 
public class TestForPicIcon { 
    public static void main(String[] args) { 
        new Myframe().init(); 
    } 
} 
 
class Myframe extends JFrame{ 
    public void init(){ 
        setVisible(true); 
        setBounds(100,100,400,300); 
        JLabel label = new JLabel("imageicon on it"); 
        URL url = Myframe.class.getResource("diga.jfif"); 
        assert url != null; 
        label.setIcon(new ImageIcon(url)); 
        label.setHorizontalAlignment(SwingConstants.CENTER); 
        getContentPane().add(label); 
    } 
} 

输出结果:

此处没有用到Icon接口,而是使用了Jlabel的seticon方法。

图片需要放在与代码同级的目录中。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

使用Jdialog实现弹出对话框功能