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: