Lớp ImageIcon trong Java Swing là một trình triển khai của Icon Iterface, để vẽ các Icon từ các Image. Dưới đây là cú pháp khai báo của lớp javax.swing.ImageIcon:
public class ImageIcon extends Object
implements Icon, Serializable, Accessible
Nội dung chính
- Lớp này kế thừa các phương thức từ các lớp sau:
- Lớp ImageIcon có các trường sau:
- Các constructor của lớp ImageIcon trong lớp Java Swing
- Các phương thức của lớp ImageIcon trong Java Swing
- Ví dụ ImageIcon trong JLabel
- Ví dụ vẽ icon
- Ví dụ thay đổi kích thước Icon
- Ví dụ vẽ icon
- Ví dụ ImageIcon trong JButton
- Ví dụ ImageIcon trong tiêu đề JFrame
Lớp này kế thừa các phương thức từ các lớp sau:
java.lang.Object
Lớp ImageIcon có các trường sau:
protected static Component component
protected static MediaTracker tracker
Các constructor của lớp ImageIcon trong lớp Java Swing
ImageIcon(): Tạo một image icon chưa được khởi tạo.
ImageIcon(byte[] imageData): Tạo một ImageIcon từ một mảng byte mà đã được đọc từ một image file chứa một định dạng hình ảnh được hỗ trợ, như GIF, JPEG.
ImageIcon(Image image): Tạo một ImageIcon từ một đối tượng Image.
ImageIcon(String filename): Tạo ImageIcon từ file đã cho.
ImageIcon(URL location): Tạo ImageIcon từ URL đã cho.
Các phương thức của lớp ImageIcon trong Java Swing
| STT | Phương thức & Mô tả |
|---|---|
| 1 | Image getImage() Trả về hình ảnh của icon này |
| 2 | int getImageLoadStatus() Trả về trạng thái của hoạt động tải hình ảnh này |
| 3 | ImageObserver getImageObserver() Trả về trình quan sát observer cho hình ảnh này |
| 4 | protected void loadImage(Image image) Tải hình ảnh, trả về chỉ khi hình ảnh được tải |
| 5 | void paintIcon(Component c, Graphics g, int x, int y) Sơn màu icon |
| 6 | void setDescription(String description) Thiết lập sự miêu tả của hình ảnh |
| 7 | void setImage(Image image) Thiết lập hình ảnh được hiển thi bởi icon này |
| 8 | String toString() Trả về một biểu diễn chuỗi của hình ảnh |
Ví dụ ImageIcon trong JLabel
Ví dụ thêm ảnh vào một label, trong ví dụ này tôi cài đặt ảnh có đường dẫn D:\usr\lock.png
package vn.viettuts.swing;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ImageIconExam {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public ImageIconExam(){
prepareGUI();
}
public static void main(String[] args) {
ImageIconExam swingControlDemo = new ImageIconExam();
swingControlDemo.showImageIconDemo();
}
private void prepareGUI() {
mainFrame = new JFrame("Vi du ImageIcon - Java Swing");
mainFrame.setSize(400, 200);
mainFrame.setLayout(new GridLayout(3, 1));
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
headerLabel = new JLabel("", JLabel.CENTER);
statusLabel = new JLabel("", JLabel.CENTER);
statusLabel.setSize(300, 100);
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showImageIconDemo() {
headerLabel.setText("Control in action: ImageIcon");
ImageIcon icon = new ImageIcon("D:\\usr\\lock.png", "Lock");
JLabel commentlabel = new JLabel("This is lock icon", icon, JLabel.CENTER);
controlPanel.add(commentlabel);
mainFrame.setVisible(true);
}
}
Chạy chương trình trên cho kết quả như sau:
Ví dụ vẽ icon
package vn.viettuts.swing;
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 icon;
public DrawingPanel() {
loadImage();
initPanel();
}
private void loadImage() {
icon = new ImageIcon("book-80.png");
}
private void initPanel() {
int w = icon.getIconWidth();
int h = icon.getIconHeight();
setPreferredSize(new Dimension(w, h));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
icon.paintIcon(this, g, 0, 0);
}
}
public class ImageIconExam1 extends JFrame {
public ImageIconExam1() {
initUI();
}
private void initUI() {
DrawingPanel dpnl = new DrawingPanel();
createLayout(dpnl);
setTitle("Image");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void createLayout(JComponent... arg) {
Container pane = getContentPane();
GroupLayout gl = new GroupLayout(pane);
pane.setLayout(gl);
gl.setHorizontalGroup(gl.createSequentialGroup().addComponent(arg[0]));
gl.setVerticalGroup(gl.createParallelGroup().addComponent(arg[0]));
pack();
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
JFrame f = new ImageIconExam1();
f.setSize(400, 200);
f.setVisible(true);
});
}
}
Chạy chương trình trên cho kết quả như sau:
Ví dụ thay đổi kích thước Icon
Ví dụ vẽ icon
package vn.viettuts.swing;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.Image;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ImageIconExam2 extends JFrame {
public ImageIconExam2() {
initUI();
}
private void initUI() {
ImageIcon originalIcon = new ImageIcon("Vietnam-Flag-icon.png");
JLabel originalLabel = new JLabel(originalIcon);
int width = originalIcon.getIconWidth() / 2;
int height = originalIcon.getIconHeight() / 2;
Image scaled = scaleImage(originalIcon.getImage(), width, height);
ImageIcon scaledIcon = new ImageIcon(scaled);
JLabel newLabel = new JLabel(scaledIcon);
createLayout(originalLabel, newLabel);
setTitle("Thay doi kich thuoc icon");
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private Image scaleImage(Image image, int w, int h) {
Image scaled = image.getScaledInstance(w, h, Image.SCALE_SMOOTH);
return scaled;
}
private void createLayout(JComponent... arg) {
Container pane = getContentPane();
GroupLayout gl = new GroupLayout(pane);
pane.setLayout(gl);
gl.setAutoCreateContainerGaps(true);
gl.setAutoCreateGaps(true);
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(arg[0]).addComponent(arg[1]));
gl.setVerticalGroup(gl.createParallelGroup()
.addComponent(arg[0]).addComponent(arg[1]));
pack();
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
ImageIconExam2 f = new ImageIconExam2();
f.setSize(500, 400);
f.setVisible(true);
});
}
}
Chạy chương trình trên cho kết quả như sau:
Ví dụ ImageIcon trong JButton
package vn.viettuts.swing;
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 ImageIconExam3 extends JFrame {
public ImageIconExam3() {
initUI();
}
private void initUI() {
ImageIcon quitIcon = new ImageIcon("setup.png");
ImageIcon saveIcon = new ImageIcon("save.png");
ImageIcon homeIcon = new ImageIcon("home.png");
JButton quitBtn = new JButton(quitIcon);
JButton saveBtn = new JButton(saveIcon);
JButton homeBtn = new JButton(homeIcon);
createLayout(quitBtn, saveBtn, homeBtn);
setTitle("Vi du icon trong JButtons");
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void createLayout(JComponent... arg) {
Container pane = getContentPane();
GroupLayout gl = new GroupLayout(pane);
pane.setLayout(gl);
gl.setAutoCreateContainerGaps(true);
gl.setAutoCreateGaps(true);
gl.setHorizontalGroup(gl.createSequentialGroup()
.addComponent(arg[0])
.addComponent(arg[1])
.addComponent(arg[2])
);
gl.setVerticalGroup(gl.createParallelGroup()
.addComponent(arg[0])
.addComponent(arg[1])
.addComponent(arg[2])
);
gl.linkSize(arg[0], arg[1], arg[2]);
pack();
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
ImageIconExam3 f = new ImageIconExam3();
f.setVisible(true);
});
}
}
Chạy chương trình trên cho kết quả như sau:
Ví dụ ImageIcon trong tiêu đề JFrame
package vn.viettuts.swing;
import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class ImageIconExam4 extends JFrame {
public ImageIconExam4() {
initUI();
}
private void initUI() {
ImageIcon webIcon = new ImageIcon("home.png");
setIconImage(webIcon.getImage());
setTitle("Vi du ImageIcon trong tieu de");
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
ImageIconExam4 f = new ImageIconExam4();
f.setVisible(true);
});
}
}
Chạy chương trình trên cho kết quả như sau: