我们可在一个JLable或从AbstractButton处担任的任何事物中利用一个图标(包罗JButton,JCheckbox,JradioButton及差异范例的JMenuItem)。操作JLables的图标十分的简朴容易(我们会在随后的一个措施例子中看到)。下面的措施例子摸索了我们可以操作按钮的图标和它们的衍生物的其它所有要领。
我们可以利用任何我们需要的GIF文件,但在这个例子中利用的这个GIF文件是这本书编码刊行的一部门,可以在www.BruceEckel.com处下载来利用。为了打开一个文件和随之带来的图像,简朴地建设一个图标并分派它文件名。从当时起,我们可以在措施中利用这个发生的图标。
//: Faces.java // Icon behavior in JButtons package c13.swing; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Faces extends JPanel { static Icon[] faces = { new ImageIcon("face0.gif"), new ImageIcon("face1.gif"), new ImageIcon("face2.gif"), new ImageIcon("face3.gif"), new ImageIcon("face4.gif"), }; JButton jb = new JButton("JButton", faces[3]), jb2 = new JButton("Disable"); boolean mad = false; public Faces() { 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!"); 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"); } } }); add(jb2); } public static void main(String args[]) { Show.inFrame(new Faces(), 300, 200); } } ///:~
一个图标可以在很多的构建器中利用,但我们可以利用setIcon()要领增加或改换图标。这个例子同样展示了当事件产生在JButton(可能一些AbstractButton)上时,为什么它可以配置各类百般的显示图标:当JButton被按下时,当它被失效时,可能“滚过”时(鼠标从它上面移动过但并不击它)。我们会留意到那给了按钮一种动画的感受。
留意东西提示条也同样增加到按钮中。