📄 intvaluebean.java
字号:
package chapter8;
import java.beans.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class IntValueBean
extends JTextField implements Serializable, PropertyChangeListener,
FocusListener
{
private Color bgColor;
private transient PropertyChangeSupport propertyChangeListeners = new
PropertyChangeSupport(this);
private int intValue;
private transient VetoableChangeSupport vetoableChangeListeners = new
VetoableChangeSupport(this);
public IntValueBean()
{
this(0, 6);
}
public IntValueBean(int intValue, int size)
{
super("" + intValue, size);
propertyChangeListeners.addPropertyChangeListener(this);
this.addFocusListener(this);
}
private void readObject(ObjectInputStream ois)
throws IOException, ClassNotFoundException
{
ois.defaultReadObject();
}
private void writeObject(ObjectOutputStream oos)
throws IOException
{
oos.defaultWriteObject();
}
public synchronized void removePropertyChangeListener(
PropertyChangeListener l)
{
super.removePropertyChangeListener(l);
if (propertyChangeListeners == null)
{
propertyChangeListeners = new PropertyChangeSupport(this);
}
propertyChangeListeners.removePropertyChangeListener(l);
}
public synchronized void addPropertyChangeListener(PropertyChangeListener l)
{
super.addPropertyChangeListener(l);
if (propertyChangeListeners == null)
{
propertyChangeListeners = new PropertyChangeSupport(this);
}
propertyChangeListeners.addPropertyChangeListener(l);
}
public void setBgColor(Color bgColor)
{
Color oldBgColor = this.bgColor;
this.bgColor = bgColor;
super.setBackground(bgColor);
propertyChangeListeners.firePropertyChange("bgColor", oldBgColor,
bgColor);
}
public void setIntValue(int intValue)
throws PropertyVetoException
{
int oldIntValue = this.intValue;
vetoableChangeListeners.fireVetoableChange("intValue",
new Integer(oldIntValue), new Integer(intValue));
this.intValue = intValue;
propertyChangeListeners.firePropertyChange("intValue",
new Integer(oldIntValue), new Integer(intValue));
}
public Color getBgColor()
{
return bgColor;
}
public int getIntValue()
{
return intValue;
}
public void propertyChange(PropertyChangeEvent evt)
{
if (evt.getSource() == this &&
evt.getPropertyName().equalsIgnoreCase("bgColor"))
{
Color color = (Color) evt.getNewValue();
Color newFgColor = new Color(255 - color.getRed(),
255 - color.getGreen(),
255 - color.getBlue());
super.setForeground(newFgColor);
}
else if (evt.getSource() == this &&
evt.getPropertyName().equalsIgnoreCase("intValue"))
{
int tempValue = ( (Integer) evt.getNewValue()).intValue();
super.setText("" + tempValue);
}
}
public synchronized void removeVetoableChangeListener(
VetoableChangeListener l)
{
super.removeVetoableChangeListener(l);
vetoableChangeListeners.removeVetoableChangeListener(l);
}
public synchronized void addVetoableChangeListener(VetoableChangeListener l)
{
super.addVetoableChangeListener(l);
vetoableChangeListeners.addVetoableChangeListener(l);
}
//将文本框中的文本转换为整数值,若转换不成功,赋予0值
public int getValue()
{
try
{
return Integer.parseInt(getText());
}
catch (NumberFormatException ex)
{
return intValue = 0;
}
}
//当光标移入时,获取整数值
public void focusGained(FocusEvent e)
{
if (!e.isTemporary())
{
intValue = getValue();
}
}
//当光标移出时,获取整数值
public void focusLost(FocusEvent e)
{
if (!e.isTemporary())
{
Integer oldValue = new Integer(intValue);
Integer newValue = new Integer(getValue());
try
{
vetoableChangeListeners.fireVetoableChange("intValue", oldValue,
newValue);
this.intValue = getValue();
propertyChangeListeners.firePropertyChange("intValue", oldValue,
newValue);
}
catch (PropertyVetoException ex)
{
JOptionPane.showMessageDialog(this, ex.toString(), "输入错误",
JOptionPane.WARNING_MESSAGE);
setText("" + intValue);
requestFocus();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -