一个简单的自定义可视化GUI组件,可添加到NetBeans的UI组件栏.
1.构建bean
ImageViewBean.java
package com.javabean.visual;
import java.awt.Dimension;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class ImageViewBean extends JLabel {
private static final long serialVersionUID = 2443348250510555759L;
private File file = null;
private static final int XPREFSIZE = 200;
private static final int YPREFSIZE = 200;
public ImageViewBean() {
setBorder(BorderFactory.createEtchedBorder());
}
public void setFileName(String fileName) {
try {
file = new File(fileName);
setIcon(new ImageIcon(ImageIO.read(file)));
} catch (IOException e) {
file = null;
setIcon(null);
}
}
public String getFileName() {
if (file == null)
return "";
else
return file.getPath();
}
public Dimension getPreferredSize() {
return new Dimension(XPREFSIZE, YPREFSIZE);
}
}
2.编写bean清单
ImageViewBean.mf
Manifest-Version: 1.0
Name: ui/ImageViewBean.class
Java-Bean: True
3.编译打包
jar cvfm ImageViewBean.jar ImageViewBean.mf com/javabean/visual/*.class
4.BeanInfo[可选]
ImageViewBeanBeanInfo,注意命名
com.javabean.visual;
import java.awt.Image;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.beans.SimpleBeanInfo;
public class ImageViewBeanBeanInfo extends SimpleBeanInfo {
@Override
public PropertyDescriptor[] getPropertyDescriptors() {
return propertyDescriptors;
}
private PropertyDescriptor[] propertyDescriptors = null;
public ImageViewBeanBeanInfo() {
try {
propertyDescriptors = new PropertyDescriptor[] { new PropertyDescriptor(
"fileName", ImageViewBean.class) };
} catch (IntrospectionException e) {
propertyDescriptors = null;
}
iconColor32 = loadImage("image/java.GIF");
}
@Override
public Image getIcon(int iconKind) {
return iconColor32;
}
private Image iconColor32;
}