廢話沒有,看代碼。
主要就是通過實現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 }
