废话没有,看代码。
主要就是通过实现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 }