何以解忧?唯有Java

其实程序员也懂得浪漫!
posts - 90, comments - 637, trackbacks - 0, articles - 2
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
关键字: swinghacks,swing

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

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(
13040);
panel.add(label);

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

注意红色的stop图表:


既然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(0000)); //设置按钮边框和标签之间的空白
        setIconTextGap(0);   //设置文本间隙
        setBorderPainted(false); //设置是否允许绘制边框
        
        setBorder(
null);  
        setText(
null);
    }
    
}

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

在ImageTest 的main 方法里加入

 
       
final ImageButton button = new ImageButton(new ImageIcon(ImagePanelTest.class.getResource("/images/sure1.png")));
        button.setLocation(
18080);
        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);      

  看看效果图:



现在添加一个可以控制按钮是否可用的方法。我们可以借助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());
            }
        });
       

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

 

项目里的所需的图片文件都在附件里 点击这里下载



只有注册用户登录后才能发表评论。


网站导航: