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);  
        }  

     

     

  • 相关阅读:
    [导入]发现管理比程序难多了!
    [导入]Sybase EAServer 3.6新特性
    [导入]仙剑奇侠传电视剧感悟
    [导入]不知道几天没有看书了!
    [导入]几年来就玩这一次,还这么惨!
    [导入]JS里关于链接的小问题。
    [导入]不经意间发现已经来这个博客有一年了。
    [导入]实用篇:用asp实现QQ在线查询
    [导入]对程序的热爱与执着。
    [导入]在SYBASE数据库中使用游标(Cursors)将多行查询结果进行逐行处理
  • 原文地址:https://www.cnblogs.com/youxin/p/2496196.html
Copyright © 2011-2022 走看看