zoukankan      html  css  js  c++  java
  • java 一个Icon接口实现的程序

      Icon是一个Interface,里面包含3种空的抽象文法,分别是getIconHeight()、getIconWidth()与paintIcon();若你想使用Icon类 来制作Icon,你必须实现(implements)这3个方法,我们直接来看下面这个例子,你就能清楚如何实现Icon界面建立Icon组件了。

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class IconDemo implements Icon {
        private int height=50;
        private int width=70;
    
        public int getIconHeight() {
            return height;
        }
    
        public int getIconWidth() {
            return width;
        }
    
        public void paintIcon(Component c, Graphics g, int x, int y) {
            g.setColor(Color.red);
            g.drawRect(x, y, width, height);
            g.fillRect(x, y, width, height);
    
        }
    
        public static void main(String[] args) {
            JFrame f = new JFrame("IconDemo");
            //不能放在这里 f.setSize(500,500);
            Container contentPane = f.getContentPane();
    
            Icon icon = new IconDemo();//注意这里为什么Icon icon可以,当然IconDemo icon是可以了,
            JLabel label = new JLabel(icon, JLabel.CENTER);
            contentPane.add(label);
            f.pack();
            f.setSize(500,500);
            f.setVisible(true);
            f.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        }
    }

    运行的结果是在一个窗口上画一个红框。
       虽然它有实现了一个Icon的接口,在 paintIcon里写了绘图的代码。但程序是什么时候调用它的呢
    往下会发现这个 Icon 是加在一个 JLabel 中显示的。而 JLabel 的参数就是一个 Icon 接口。只是平时我们用 ImageIcon 来实际显示图片,而 ImageIcon也是实现了Icon接口,问题就很清楚了。显示图片时实际也是调用了 Icon接口的 paintIcon方法。绘制图片时就调用paintIcon()函数。

    给按钮添加背景图片

     public void setIcon(String file, JButton iconButton)
     {  
                ImageIcon icon = new ImageIcon(file);  
                Image temp=icon.getImage().getScaledInstance(iconButton.getWidth(),  
                        iconButton.getHeight(), icon.getImage().SCALE_DEFAULT);  
                icon = new ImageIcon(temp);  
             iconButton.setIcon(icon);  
        }  

     

     

  • 相关阅读:
    less学习笔记(一)
    Angular.js学习笔记(三)
    备份域控制器升级为主域控制器
    MS SQL 2005 无法建立用户实例
    MS sql 无法进行事务日志备份
    安装设置IIS5.1
    问卷设计入门
    windows installer 应用变换时的错误.请验证指定的变换路径是否有
    【HDOJ6225】Little Boxes(Java)
    【HDOJ6222】Heron and His Triangle(Java,二分,递推)
  • 原文地址:https://www.cnblogs.com/youxin/p/2496196.html
Copyright © 2011-2022 走看看