/**
* JNumTextField.java
*
* Created on 2006年4月23日, 下午7:54
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/package org.firebug;import java.awt.BorderLayout;import javax.swing.JTextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;
import java.awt.Dimension;/**
* <p>Title: 整数输入框</p>
*
* <p>Description: 该组件继承于JTextField,只能接受整数输入,不能是实数,即最小值为Integer.MIN_VALUE,最大值为Integer.MAX_VALUE。</p>
* <p>当输入值小于指定的最小值时,当前值取该最小值;当输入值大于指定的最大值时,当前值取该最大值。</p>
* <p>当输入值为无效的整数格式时,当前值不改变。</p>
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: firebug工作室</p>
*
* <p>author firebug</p>
* <p>version 1.0</p>
*/
public class JNumTextField extends JTextField
{
BorderLayout borderLayout1 = new BorderLayout();
private int minValue=Integer.MIN_VALUE;
private int maxValue=Integer.MAX_VALUE;
private int curValue=0;
Dimension dimension1 = this.getMaximumSize();
/**
*value表示当前值
*最大值默认为Integer.MAX_VALUE
*最小值默认为Integer.MIN_VALUE
*/
public JNumTextField(int value)
{
super(String.valueOf(value));
try
{
jbInit();
this.setCurValue(value);
//this.setText(String.valueOf(value));
}
catch (Exception exception)
{
exception.printStackTrace();
}
}
/**
*当前值默认为0
*最大值默认为Integer.MAX_VALUE
*最小值默认为Integer.MIN_VALUE
*/
public JNumTextField()
{
this(0);
}
private void jbInit() throws Exception
{
setLayout(borderLayout1);
this.addKeyListener(new java.awt.event.KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
jNumTextField_keyTyped(e);
}
public void keyReleased(KeyEvent e)
{
jNumTextField_keyReleased(e);
}
});
this.addFocusListener(new java.awt.event.FocusAdapter()
{
public void focusLost(java.awt.event.FocusEvent evt)
{
jNumTextFieldFocusLost(evt);
}
});
}
private void jNumTextFieldFocusLost(java.awt.event.FocusEvent evt)
{
// TODO 将在此处添加您的处理代码:
try
{
if (Integer.parseInt(this.getText())>maxValue)
{
curValue=maxValue;
}
else
{
if (Integer.parseInt(this.getText())<minValue)
{
curValue=minValue;
}
else
{
curValue=Integer.parseInt(getText());
}
}
}
catch(NumberFormatException e)
{
//do Nothing;
}
finally
{
this.setText(String.valueOf(curValue));
}
}
/**
*返回当前值
*/
public int getCurValue()
{
return curValue;
}
/**
*返回最大值
*/
public int getMaxValue()
{
return maxValue;
}
/**
*返回最小值
*/
public int getMinValue()
{
return minValue;
}
/**
*设置当前值,当value大于最大值或小于最小值时,抛出NumberOverFlowException异常
*/
public void setCurValue(int value)throws NumberOverFlowException
{
if (value>maxValue)
{
throw new NumberOverFlowException("输入值不能超过最大值");
}
else
{
if (value<minValue)
{
throw new NumberOverFlowException("输入值不能小于最小值");
}
else
{
curValue=value;
setText(String.valueOf(curValue));
}
}
}
/**
*设置最大值,当value小于最小值时,抛出NumberOverFlowException异常
*/
public void setMaxValue(int value)throws NumberOverFlowException
{
if (value<minValue)
{
throw new NumberOverFlowException("最大值不能小于最小值");
}
else
{
this.maxValue=value;
if (this.getCurValue()>value)
{
this.setCurValue(value);
setText(String.valueOf(curValue));
}
}
}
/**
*设置最小值,当value大于最大值时,抛出NumberOverFlowException异常
*/
public void setMinValue(int value)throws NumberOverFlowException
{
if (value>maxValue)
{
throw new NumberOverFlowException("最小值不能大于最大值");
}
else
{
this.minValue=value;
if (this.getCurValue()<value)
{
this.setCurValue(value);
setText(String.valueOf(curValue));
}
}
}
private void jNumTextField_keyTyped(KeyEvent evt)
{
// TODO 将在此处添加您的处理代码:
if (!Character.isDigit(evt.getKeyChar()))
{
if (evt.getKeyChar()!='-')
{
evt.setKeyChar('\u0000');
}
}
}
private void jNumTextField_keyReleased(KeyEvent evt)
{
}
}class NumberOverFlowException extends Exception
{
public NumberOverFlowException(String s)
{
super(s);
}
}
* JNumTextField.java
*
* Created on 2006年4月23日, 下午7:54
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/package org.firebug;import java.awt.BorderLayout;import javax.swing.JTextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;
import java.awt.Dimension;/**
* <p>Title: 整数输入框</p>
*
* <p>Description: 该组件继承于JTextField,只能接受整数输入,不能是实数,即最小值为Integer.MIN_VALUE,最大值为Integer.MAX_VALUE。</p>
* <p>当输入值小于指定的最小值时,当前值取该最小值;当输入值大于指定的最大值时,当前值取该最大值。</p>
* <p>当输入值为无效的整数格式时,当前值不改变。</p>
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: firebug工作室</p>
*
* <p>author firebug</p>
* <p>version 1.0</p>
*/
public class JNumTextField extends JTextField
{
BorderLayout borderLayout1 = new BorderLayout();
private int minValue=Integer.MIN_VALUE;
private int maxValue=Integer.MAX_VALUE;
private int curValue=0;
Dimension dimension1 = this.getMaximumSize();
/**
*value表示当前值
*最大值默认为Integer.MAX_VALUE
*最小值默认为Integer.MIN_VALUE
*/
public JNumTextField(int value)
{
super(String.valueOf(value));
try
{
jbInit();
this.setCurValue(value);
//this.setText(String.valueOf(value));
}
catch (Exception exception)
{
exception.printStackTrace();
}
}
/**
*当前值默认为0
*最大值默认为Integer.MAX_VALUE
*最小值默认为Integer.MIN_VALUE
*/
public JNumTextField()
{
this(0);
}
private void jbInit() throws Exception
{
setLayout(borderLayout1);
this.addKeyListener(new java.awt.event.KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
jNumTextField_keyTyped(e);
}
public void keyReleased(KeyEvent e)
{
jNumTextField_keyReleased(e);
}
});
this.addFocusListener(new java.awt.event.FocusAdapter()
{
public void focusLost(java.awt.event.FocusEvent evt)
{
jNumTextFieldFocusLost(evt);
}
});
}
private void jNumTextFieldFocusLost(java.awt.event.FocusEvent evt)
{
// TODO 将在此处添加您的处理代码:
try
{
if (Integer.parseInt(this.getText())>maxValue)
{
curValue=maxValue;
}
else
{
if (Integer.parseInt(this.getText())<minValue)
{
curValue=minValue;
}
else
{
curValue=Integer.parseInt(getText());
}
}
}
catch(NumberFormatException e)
{
//do Nothing;
}
finally
{
this.setText(String.valueOf(curValue));
}
}
/**
*返回当前值
*/
public int getCurValue()
{
return curValue;
}
/**
*返回最大值
*/
public int getMaxValue()
{
return maxValue;
}
/**
*返回最小值
*/
public int getMinValue()
{
return minValue;
}
/**
*设置当前值,当value大于最大值或小于最小值时,抛出NumberOverFlowException异常
*/
public void setCurValue(int value)throws NumberOverFlowException
{
if (value>maxValue)
{
throw new NumberOverFlowException("输入值不能超过最大值");
}
else
{
if (value<minValue)
{
throw new NumberOverFlowException("输入值不能小于最小值");
}
else
{
curValue=value;
setText(String.valueOf(curValue));
}
}
}
/**
*设置最大值,当value小于最小值时,抛出NumberOverFlowException异常
*/
public void setMaxValue(int value)throws NumberOverFlowException
{
if (value<minValue)
{
throw new NumberOverFlowException("最大值不能小于最小值");
}
else
{
this.maxValue=value;
if (this.getCurValue()>value)
{
this.setCurValue(value);
setText(String.valueOf(curValue));
}
}
}
/**
*设置最小值,当value大于最大值时,抛出NumberOverFlowException异常
*/
public void setMinValue(int value)throws NumberOverFlowException
{
if (value>maxValue)
{
throw new NumberOverFlowException("最小值不能大于最大值");
}
else
{
this.minValue=value;
if (this.getCurValue()<value)
{
this.setCurValue(value);
setText(String.valueOf(curValue));
}
}
}
private void jNumTextField_keyTyped(KeyEvent evt)
{
// TODO 将在此处添加您的处理代码:
if (!Character.isDigit(evt.getKeyChar()))
{
if (evt.getKeyChar()!='-')
{
evt.setKeyChar('\u0000');
}
}
}
private void jNumTextField_keyReleased(KeyEvent evt)
{
}
}class NumberOverFlowException extends Exception
{
public NumberOverFlowException(String s)
{
super(s);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货