图标(icon)

你可以在JLable或者任何从AbstractButton(包括JButton,JCheckBox, JradioButton,

以及几种JMenuItem)继承的组件中使用Icon。和JLabel一起使用Icon的做法非常直接

(后面有例子)。下面的例子还研究了与按钮(或者从按钮继承的组件)搭配使用图标的

所有方式。

 

你可以使用任何想用的gif文件,本例中使用的文件来自于本书的源代码包(可以从

www.BruceEckel.com下载)。要打开一个文件并且得到图形,只需创建一个ImageIcon

对象并且把文件名传递给它即可。然后,你就能在程序中使用得到的图标了。

 

//:c14:Faces.java

// Iconbehavior in Jbuttons.

// <appletcode=Faces width=400 height=100></applet>

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import com.bruceeckel.swing.*;

 

public   class Faces extends JApplet {

private   static Icon[] faces;

private JButton jb, jb2 = new JButton("Disable");

private   boolean mad =  false;

public   void init() {

    faces = new Icon[] {

new ImageIcon(getClass().getResource("Face0.gif")),

new ImageIcon(getClass().getResource("Face1.gif")),

new ImageIcon(getClass().getResource("Face2.gif")),

new ImageIcon(getClass().getResource("Face3.gif")),

new ImageIcon(getClass().getResource("Face4.gif")),

    };

    jb = new JButton("JButton", faces[3]);

    Container cp = getContentPane();

    cp.setLayout(new FlowLayout());

    jb.addActionListener(new ActionListener() {

public   void actionPerformed(ActionEvent e) {

if(mad) {

          jb.setIcon(faces[3]);

          mad = false;

        }     else {

          jb.setIcon(faces[0]);

          mad = true;

        }

        jb.setVerticalAlignment(JButton.TOP);

       jb.setHorizontalAlignment(JButton.LEFT);

      }

    });

    jb.setRolloverEnabled(true);

    jb.setRolloverIcon(faces[1]);

    jb.setPressedIcon(faces[2]);

    jb.setDisabledIcon(faces[4]);

    jb.setToolTipText("Yow!");

    cp.add(jb);

    jb2.addActionListener(new ActionListener() {

public   void actionPerformed(ActionEvent e) {

if(jb.isEnabled()) {

          jb.setEnabled(false);

          jb2.setText("Enable");

        }     else {

          jb.setEnabled(true);

          jb2.setText("Disable");

        }

      }

    });

cp.add(jb2);

  }

public   static    void main(String[] args) {

    Console.run(new Faces(), 400, 200);

  }

}   ///:~

 

许多Swing组件的构造器都接受Icon类型的参数,你也可以使用setIcon( )来加入或者改

变图标。本例还演示了如何让JButton(或者任何AbstractButton类型)在各种情况下显

示不同的图标:按下、禁止,或者“浮动”(鼠标移动到按钮上没有点击的时候)。这使

得按钮具有了相当不错的动画效果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值