1. 程式人生 > 程式設計 >Java Swing JLabel標籤的使用方法

Java Swing JLabel標籤的使用方法

1. 概述

官方JavaDocsApi: javax.swing.JLabel

JLabel,標籤。標籤主要用於展示 文字 或 圖片,也可以 同時顯示文字和圖片。

JLabel 的構造方法:

/*
 * 構造方法中的引數含義:
 *   text: 標籤顯示的 文字
 *   image: 標籤顯示的 圖片
 *   horizontalAlignment: 標籤內容(在標籤內)的水平對其方式(豎直方向預設居中,可通過方法設定)
 */
JLabel()

JLabel(String text)

JLabel(String text,int horizontalAlignment)

JLabel(Icon image) 

JLabel(Icon image,int horizontalAlignment) 

JLabel(String text,Icon image,int horizontalAlignment) 

JLabel 的常用方法:

// 設定 文字 和 圖片
void setText(String text)
void setIcon(Icon icon)

// 設定文字相對於圖片的位置(文字預設在圖片右邊垂直居中)
void setHorizontalTextPosition(int textPosition)
void setVerticalTextPosition(int textPosition)

// 設定標籤內容(在標籤內)的對其方式(預設左對齊並垂直居中)
void setHorizontalAlignment(int alignment)
void setVerticalAlignment(int alignment)

// 設定圖片和文字之間的間隙
void setIconTextGap(int iconTextGap)

/* 
 * 下面的方法定義在 JComponent 基類中
 */

// 設定文字的字型型別、樣式 和 大小
void setFont(Font font)

// 設定字型顏色
void setForeground(Color fg)

// 當滑鼠移動到元件上時顯示的提示文字
void setToolTipText(String text)

// 設定元件的背景
void setBackground(Color bg)

// 設定元件是否可見
void setVisible(boolean visible)

// 設定元件是否為 不透明,JLabel預設為透明,設定為不透明後才能顯示背景
void setOpaque(boolean isOpaque)

// 設定元件的 首選 大小
void setPreferredSize(Dimension preferredSize)

// 設定元件的 最小 大小
void setMinimumSize(Dimension minimumSize)

// 設定元件的 最大 大小
void setMaximumSize(Dimension maximumSize)

/*
 * 上面的對齊引數具體的取值常量參考 DocsApi;
 * setXXX(...) 方法往往都對應著 getXXX() 方法。
 */

顯示圖片時,Icon例項的建立(一般建立ImageIcon,ImageIcon 實現了 Icon):

ImageIcon 的構造方法:

// 使用 本地路徑 圖片建立 ImageIcon
ImageIcon(String filename)

// 使用 網路路徑 圖片建立 ImageIcon
ImageIcon(URL location)

// 使用圖片檔案的位元組陣列建立 ImageIcon
ImageIcon(byte[] imageData)

// 使用 java.awt.Image 例項建立 ImageIcon
ImageIcon(java.awt.Image image)

java.awt.Image 例項的建立:

// 方法一: 通過 java.awt.Toolkit 工具類來讀取本地、網路 或 記憶體中 的 圖片(支援 GIF、JPEG 或 PNG)
Image image = Toolkit.getDefaultToolkit().getImage(String filename);
Image image = Toolkit.getDefaultToolkit().getImage(URL url);
Image image = Toolkit.getDefaultToolkit().createImage(byte[] imageData);

// 方法二: 通過 javax.imageio.ImageIO 工具類讀取本地、網路 或 記憶體中 的 圖片(BufferedImage 繼承自 Image)
BufferedImage bufImage = ImageIO.read(File input);
BufferedImage bufImage = ImageIO.read(URL input);
BufferedImage bufImage = ImageIO.read(InputStream input);

/*
 * PS_01: 圖片寬高: BufferedImage 可以通過 bufImage.getWidth() 和 bufImage.getHeight() 方法直接獲取圖片的寬高;
 *         Image 獲取寬高需要另外傳入一個 ImageObserver 引數。
 *
 * PS_02: 圖片裁剪: BufferedImage 通過 bufImage.getSubimage(int x,int y,int w,int h) 方法可以擷取圖片的
 *         任意一部分,返回一個新的 BufferedImage 例項。
 *
 * PS_03: 圖片縮放: Image 通過 image.getScaledInstance(int width,int height,int hints) 方法可以對圖片進行
 *         縮放,返回新的一個 Image 例項。
 */

2. 程式碼例項

package com.xiets.swing;

import javax.swing.*;
import java.awt.*;

public class Main {

  public static void main(String[] args) {
    JFrame jf = new JFrame("測試視窗");
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    // 建立內容面板,預設使用流式佈局
    JPanel panel = new JPanel();

    /*
     * 只顯示文字
     */
    JLabel label01 = new JLabel();
    label01.setText("Only Text");
    label01.setFont(new Font(null,Font.PLAIN,25)); // 設定字型,null 表示使用預設字型
    panel.add(label01);

    /*
     * 只顯示圖片
     */
    JLabel label02 = new JLabel();
    label02.setIcon(new ImageIcon("demo01.jpg"));
    panel.add(label02);

    /*
     * 同時顯示文字和圖片
     */
    JLabel label03 = new JLabel();
    label03.setText("文字和圖片");
    label03.setIcon(new ImageIcon("demo02.jpg"));
    label03.setHorizontalTextPosition(SwingConstants.CENTER);  // 水平方向文字在圖片中心
    label03.setVerticalTextPosition(SwingConstants.BOTTOM);   // 垂直方向文字在圖片下方
    panel.add(label03);

    jf.setContentPane(panel);
    jf.pack();
    jf.setLocationRelativeTo(null);
    jf.setVisible(true);
  }

}

結果展示:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。