SwingHacks学习笔记(2)-----自定义JLabel,JButton

接着上次的进度,上次写完了背景,

SwingHacks学习笔记(1)-----自定义JPanel(一个以图像填充的组件)

现在可以考虑标签和按钮了。

 

这个标签是位于背景上的某个位置的静态图像。

例1.3:一个图像标签类

package org.component;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

/**
 *
 * @author root
 */
public class ImageLabel extends JLabel {
    
     public ImageLabel(String img) {
        this(new ImageIcon(img));
        System.out.print(img);
    }


    public ImageLabel(ImageIcon icon)
    {
        //得到的是图像的长和宽
        setSize(icon.getImage().getWidth(null),icon.getImage().getHeight(null));
        setIcon(icon);   //设置图像
        setIconTextGap(0);  //设置文本间隙
        setBorder(null);  //设置边框和文本为null,这样可以消除图像周围的多余空间。
        setText(null);
        setOpaque(false);  //告诉标签不要绘制自己的背景。即可以变成透明的。
    }
    
}
  

写完上面的代码后就可以在ImageTest 的main 方法里加入下面这段代码:

 ImageLabel2 label = new ImageLabel2(new ImageIcon(ImagePanelTest.class.getResource("/images/stop.png")));
 
 label.setLocation(130, 40);
 panel.add(label); 
  

测试一个效果:(这次换个背景,原来的背景太鲜艳了,这次换个淡点的。

注意红色的stop图表;

 

SwingHacks学习笔记(2)-----自定义JLabel,JButton

 

既然ImageLabel 效果有了,现在开始写ImageButton了

 

package org.component;

import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.JButton;

/**
 *
 * @author root
 */
public class ImageButton extends JButton {
    
    public ImageButton(String img) {
        this(new ImageIcon(img));
        System.out.print(img);
    }

    public ImageButton(ImageIcon icon) {
        setSize(icon.getImage().getWidth(null),icon.getImage().getHeight(null));
        setIcon(icon);
        setMargin(new Insets(0, 0, 0, 0)); //设置按钮边框和标签之间的空白
        setIconTextGap(0);   //设置文本间隙
        setBorderPainted(false); //设置是否允许绘制边框
        
        setBorder(null);  
        setText(null);
    }
    
}

 

为ImageButton 添加互动和其他状态,幸运的是,这项工作不需要自己编写,JButton 已经为表示滚动,按下,选中,失效和失效选中状态的图像提供了支持。可通过普通的set方法添加各种选中状态:

在ImageTest 的main 方法里加入

 

 
       final ImageButton2 button = new ImageButton2(new ImageIcon(ImagePanelTest.class.getResource("/images/sure1.png")));
        button.setLocation(180, 80);
        button.setPressedIcon(new ImageIcon(ImagePanelTest.class.getResource("/images/sure3.png")));
        button.setRolloverIcon(new ImageIcon(ImagePanelTest.class.getResource("/images/sure-Rollover.png")));
        button.setSelectedIcon(new ImageIcon(ImagePanelTest.class.getResource("/images/sure3.png")));
        button.setRolloverSelectedIcon(new ImageIcon(ImagePanelTest.class.getResource("/images/sure-rolloverselected.png")));
        button.setDisabledIcon(new ImageIcon(ImagePanelTest.class.getResource("/images/sure-disable.png")));
        button.setDisabledSelectedIcon(new ImageIcon(ImagePanelTest.class.getResource("/images/sure-disable.png")));
        
         button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                button.setSelected(!button.isSelected());
                System.out.println("selecting");
            }

            
        });


 panel.add(button);
        

 

 

 

  看看效果图:

SwingHacks学习笔记(2)-----自定义JLabel,JButton

 

 

 

现在添加一个可以控制按钮是否可用的方法。我们可以借助JCheckBox 来实现

在ImageTest main 方法里添加以下代码:

 

  final JCheckBox checkbox = new JCheckBox("Disable");
        checkbox.setLocation(180,150);
        checkbox.setOpaque(false);
        checkbox.setSize(checkbox.getPreferredSize());
        panel.add(checkbox);
        checkbox.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                button.setEnabled(!checkbox.isSelected());
            }
        });
        
 

然后在进行测试 ,效果如下:

 

SwingHacks学习笔记(2)-----自定义JLabel,JButton SwingHacks学习笔记(2)-----自定义JLabel,JButton

 

 

项目里的所需的图片文件都在附件里

 

 

你可能感兴趣的:(工作,swing)