JAVA學習Swing章節標簽JLabel中圖標的使用

来源:http://www.cnblogs.com/biehongli/archive/2016/08/07/5747314.html
-Advertisement-
Play Games

實例運行結果如下 實例運行結果如下 ...


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();//實例化對象就是實現構造方法
    }

}

實例運行結果如下


 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數組是程式的基本數據結構,數組操作是常用操作,Arrays類封裝了數組的一些常見操作,它有哪些方法?是怎麼實現的?多維數組是怎麼回事?排序方法的介面體現了怎樣的設計思維?Java是如何實現排序的?Arrays中的方法不夠用怎麼辦?... ...
  • 一、簡介 Tornado 是 FriendFeed 使用的可擴展的非阻塞式 web 伺服器及其相關工具的開源版本。這個 Web 框架看起來有些像web.py 或者 Google 的 webapp,不過為了能有效利用非阻塞式伺服器環境,這個 Web 框架還包含了一些相關有用工具及優化。 Tornado ...
  • 初識python #以下的代碼都是在PyCharm 4.5的編輯工具下執行的,並且python的版本是3.4 python的第一程式 print("Hello Word") #Hello Word 一、變數名 一)作用:一是用來存儲,二是用來調用 二)定義規則: 1)變數名只能是字母、數字、下劃線的 ...
  • volatile 的特性 當我們聲明共用變數為 volatile 後,對這個變數的讀/寫將會很特別。理解 volatile 特性的一個好方法是:把對 volatile 變數的單個讀/寫,看成是使用同一個鎖對這些單個讀/寫操作做了同步。下麵我們通過具體的示例來說明,請看下麵的示例代碼: 假設有多個線程 ...
  • 1.開通語音識別(預設關閉) 2.語音識別 請註意,開通語音識別後,用戶每次發送語音給公眾號時,微信會在推送的語音消息XML數據包中,增加一個Recognition欄位(註:由於客戶端緩存,開發者開啟或者關閉語音識別功能,對新關註者立刻生效,對已關註用戶需要24小時生效。開發者可以重新關註此帳號進行 ...
  • 學習Hibernate ,我們首先要知道為什麼要學習它?它有什麼好處?也就是我們為什麼要學習框架技術? 還要知道 什麼是Hibernate? 為什麼要使用Hibernate? Hibernate的配置文件的作用是什麼? Hibernate映射文件的作用是什麼? Hibernate持久化對象的狀態有哪 ...
  • nodejs windows下的調用方法: C:\Users\owen>node helloworld.jsHello WorldHello: 25 C:\Users\owen>node getmodule.jsHello BYVoid C:\Users\owen>node app.jsHTTP S ...
  • 在Eclipse 創建動態WEB 工程,在src 下 創建 config.xml: 提示Error: Content is not allowed in prolog 查看為DOM 解析xml error, 查看網上加入 dom4j.jar,refrensh並無效果; // 解決辦法: 用記事本創建 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...