package com.swing; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Graphics; import javax.swing.Icon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.WindowConstants; /** * 1:在Swing中顯示文本或提示信息的方法是使用標簽,它支持文本字符串和圖標 * 重點是標簽含有文本字符串和圖標 * * 2:標簽可以顯示一行只讀文本,一個圖像或帶圖像的文本,它並不能產生任何類型的事件 * 只是簡單的顯示文本和圖片,但是可以使用標簽的特性指定標簽上文本的對齊方式 * 重點是只是簡單的顯示文本和圖片 * * 3:JLabel標簽的構造方法,帶圖標,並且設置圖標水平對齊方式,帶文字,並設置文字的水平對齊方式 * 帶圖標帶文字,並且設定標簽內容的水平對其方式 * * 4:Swing上面的圖標可以放置在按鈕,標簽,等組件上面,用於描述組件的用途 * * 5:Swing中通過Icon接口來實現創建圖表,可以在創建時給定圖標的大小,顏色等特性 * 如果使用Icon接口,必須實現Icon的三個接口 * @author biexiansheng * */ public class DrawIcon implements Icon{//實現Icon的接口,必須實現Icon的三個方法 private int width;//聲明圖標的寬 private int height;//聲明圖標的長 //定義構造方法 public DrawIcon(int width,int height){ this.width=width; this.height=height; } @Override public void paintIcon(Component c, Graphics g, int x, int y) { // TODO Auto-generated method stub g.fillOval(x,y,width,height); //此處的學習難點在Graphics那一章節。 } @Override public int getIconWidth() {//實現getIconWidth()方法 // TODO Auto-generated method stub return this.width; } @Override public int getIconHeight() {//實現getIconHeight()方法 // TODO Auto-generated method stub return this.height; } public static void main(String[] args) { DrawIcon icon=new DrawIcon(150,150);//初始化並且向構造方法傳值 //創建一個標簽,並設置標簽上的文字在標簽正中間 JLabel jl=new JLabel("測試",icon,SwingConstants.CENTER); JFrame jf=new JFrame();//創建一個JFrame窗口 Container container=jf.getContentPane();//將窗口轉換為容器 container.setBackground(Color.BLUE); container.add(jl); //設置容器的外部屬性 jf.setTitle("標簽的使用,創建圖標"); jf.setVisible(true); jf.setSize(340,400); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } }
實例運行結果如下
package com.swing; import java.awt.Container; import java.net.URL; import javax.swing.Icon; import javax.swing.ImageIcon; /** * 1:Swing中的圖標除了可以繪制以外,還可以使用某個特定的圖片創建。 * Swing利用javax.swing.ImageIcon類根據現有的圖片創建圖標 * ImageIcon類實現了Icon接口,同時Java支持多種圖片格式 * * 2:ImageIcon類有多個構造方法 * * 第一創建一個通用的ImageIcon對象,當真正需要設置圖片時再使用ImageIcon對象 * 調用setImage(Image image)方法來操作 * 第二直接從圖片源創建圖表 * 第三除了可以直接從圖片源創建圖表之外,還可以為這個圖標添加簡短的描述 * 第四利用位於計算機網絡上的圖像文件創建圖標 */ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.WindowConstants; public class MyImageIcon extends JFrame { public MyImageIcon(){ JFrame jf=new JFrame();//創建一個窗體 Container container=jf.getContentPane();//將窗體轉化為容器 //創建一個標簽//標簽的5種構造方法類型 JLabel jl=new JLabel("這是一個JFrame窗體",JLabel.CENTER); //獲取圖片所在的URL URL url=MyImageIcon.class.getResource("imageButton.jpg"); //java.lang.Class類中的getResource()方法可以獲取資源文件的URL路徑 //該方法的參數是imageButton.jpg,這個路徑是相對於MyImageIcon類文件的 //所以可將imageButton.jpg圖片放在和此類同一個文件夾下面 Icon icon=new ImageIcon(url);//實例化Icon對象 jl.setIcon(icon);//為標簽設置圖片 //設置文字放置在標簽中間 jl.setHorizontalAlignment(SwingConstants.CENTER); jl.setOpaque(true);//設置標簽為不透明狀態 container.add(jl);//將標簽添加到容器中 jf.setTitle("容器左上角"); jf.setSize(250, 100); jf.setVisible(true); //設置窗體的關閉模式 jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { // TODO Auto-generated method stub MyImageIcon icon=new MyImageIcon();//實例化對象就是實現構造方法 } }
實例運行結果如下