废话没有,看代码。

主要就是通过实现Icon接口在标签添加一个圆形图标,并在框架中显示。

 1 package com.sword.swing_test;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 import java.awt.event.WindowAdapter;
 6 import java.awt.event.WindowEvent;
 7 
 8 public class DrawIcon implements Icon {
 9     //在Swing中通过Icon接口创建图标,Icon中有三个方法必须实现
10     //public int getIconWidth()、public int getIconHeight()、
11     // public void paintIcon(Component arg0,Graphics arg1,int arg2,int arg4)
12     private int width;
13     private int height;
14     public int getIconWidth(){
15         return this.width;
16     }
17     public int getIconHeight(){
18         return this.height;
19     }
20     public DrawIcon(int width,int height){
21         this.width=width;
22         this.height=height;
23     }
24     //实现paintIcon方法
25     public void paintIcon(Component arg0,Graphics arg1,int x,int y){
26         //绘制一个圆形
27         arg1.fillOval(x,y,width,height);
28     }
29     public static void main(String[] arg){
30         JFrame jf=new JFrame("IconTest");
31         Container container=jf.getContentPane();
32         DrawIcon icon=new DrawIcon(15,15);
33         //JLabel(标签)中其中之一构造方法为public(String text,Icon icon,int aligment)
34         //第三个参数为控制text即标签文本的对齐方式,用SwingConstants的静态常量
35         JLabel jl=new JLabel("Sword",icon,SwingConstants.CENTER);
36         container.add(jl);
37         /*这里为什么使用Container的setBackground而不是JFrame的setBackground?
38         我们先理论的说一下:在Swing编程体系中Swing容器分为三种,其中顶层容器又分为
39         四层;自上而下分别为glass pane(玻璃面板)、
40         content pane(内容面板)和menu bar(菜单条)、
41         layered pane(分层面板)、root pane(根面板)
42         frame的设置属性在这些面板之下表现,我们看到的也是从上往下的结果。
43         通俗说就是Container默认背景颜色设置颜色为white,位于JFrame层的上面,JFrame设置的背景
44         颜色会被Container的背景颜色遮蔽起来。
45          */
46         //jf.setBackground();
47         container.setBackground(Color.GREEN);
48         //设置窗口关闭触发事件的一种方式
49         jf.addWindowListener(new WindowAdapter(){
50             @Override
51             public void windowClosing(WindowEvent e){
52                 System.exit(0);
53             }
54         });
55         //jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);j
56         jf.setSize(500,500);
57         jf.setVisible(true);
58     }
59 }