HOWTO · Java

在 Java 中建立影象圖示

本教程演示瞭如何在 Java 中建立影象圖示。

本頁內容

Java 中的 Swing 庫具有類 ImageIcon,可用於建立影象圖示。本教程將演示如何在 Java 中製作不同的影象圖示。

在 Java 中使用 Swing.ImageIcon 繪製影象圖示

繪製影象圖示意味著從給定影象建立影象圖示。

例子:

package delftstack;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

class DrawingPanel extends JPanel {
  private ImageIcon img_icon;

  public DrawingPanel() {
    load_Image();
    init_Panel();
  }

  private void load_Image() {
    img_icon = new ImageIcon("delftstack.jpg");
  }

  private void init_Panel() {
    int img_width = img_icon.getIconWidth();
    int img_height = img_icon.getIconHeight();
    setPreferredSize(new Dimension(img_width, img_height));
  }

  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    img_icon.paintIcon(this, g, 0, 0);
  }
}

public class Image_Icon extends JFrame {
  public Image_Icon() {
    init_User_Inter();
  }

  private void init_User_Inter() {
    DrawingPanel drawing1 = new DrawingPanel();

    createLayout(drawing1);

    setTitle("Image Icon");
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  private void createLayout(JComponent... argument) {
    Container demo_pane = getContentPane();
    GroupLayout demo_gl = new GroupLayout(demo_pane);
    demo_pane.setLayout(demo_gl);

    demo_gl.setHorizontalGroup(demo_gl.createSequentialGroup().addComponent(argument[0]));

    demo_gl.setVerticalGroup(demo_gl.createParallelGroup().addComponent(argument[0]));

    pack();
  }

  public static void main(String[] args) {
    EventQueue.invokeLater(() -> {
      JFrame demo_img = new Image_Icon();
      demo_img.setVisible(true);
    });
  }
}

上面的程式碼嘗試載入 delftstack.jpg 影象並將其繪製為圖示。

輸出:

繪製圖示

在 Java 中使用 Swing.ImageIcon 建立影象圖示按鈕

圖片圖示主要用在按鈕上; 讓我們嘗試建立帶有影象圖示的按鈕。

例子:

package delftstack;

import static javax.swing.JFrame.EXIT_ON_CLOSE;

import java.awt.Container;
import java.awt.EventQueue;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class Custom_Image_Icon extends JFrame {
  public Custom_Image_Icon() {
    init_User_Interface();
  }

  private void init_User_Interface() {
    ImageIcon Facebook_Icon = new ImageIcon("facebook.png");
    ImageIcon Twitter_Icon = new ImageIcon("twitter.png");
    ImageIcon Email_Icon = new ImageIcon("email.png");

    JButton Facebook_Btn = new JButton(Facebook_Icon);
    JButton Twitter_Btn = new JButton(Twitter_Icon);
    JButton Email_Btn = new JButton(Email_Icon);

    createLayout(Facebook_Btn, Twitter_Btn, Email_Btn);

    setTitle("Image Icons on Buttons");
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
  }

  private void createLayout(JComponent... argument) {
    Container Btn_Pane = getContentPane();
    GroupLayout demo_graphic = new GroupLayout(Btn_Pane);
    Btn_Pane.setLayout(demo_graphic);

    demo_graphic.setAutoCreateContainerGaps(true);
    demo_graphic.setAutoCreateGaps(true);

    demo_graphic.setHorizontalGroup(demo_graphic.createSequentialGroup()
                                        .addComponent(argument[0])
                                        .addComponent(argument[1])
                                        .addComponent(argument[2]));

    demo_graphic.setVerticalGroup(demo_graphic.createParallelGroup()
                                      .addComponent(argument[0])
                                      .addComponent(argument[1])
                                      .addComponent(argument[2]));

    demo_graphic.linkSize(argument[0], argument[1], argument[2]);
    pack();
  }

  public static void main(String[] args) {
    EventQueue.invokeLater(() -> {
      Custom_Image_Icon Btn_Icons = new Custom_Image_Icon();
      Btn_Icons.setVisible(true);
    });
  }
}

上面的程式碼建立了三個帶有 Facebook、Twitter 和電子郵件圖示的按鈕。

輸出:

按鈕圖示