public static void setFieldAtNumberRangeAllowed(final JTextComponent field,final int minValue,final int maxValue) {
field.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent e) { try { int value = Integer.parseInt(field.getText()); if(value > minValue && value < maxValue) { //-----DONOTHING----- } else { System.out.println("input must between "+minValue+" ~ "+maxValue); } } catch(Throwable ex) { System.out.println("need input integer value"); } }}); }把System.out.println都替换成有用的操作就好了。
控制文本输入,本人觉得最好是自定义一个Document对象,在insertString方法中控制class NumberDocument extends PlainDocument{ int min; int max; public NumberDocument(int mi,int ma) { min = mi; max = ma; }
//重载Document的插入文本的方法 public void insertString(int offset;String s,AttributSet as) { try { int value = Integer.parseInt(s); if(value > min && value < max) { super.insertString(offset,s,as); } } catch(Throwable ex) {
{
field.addCaretListener(new CaretListener()
{
public void caretUpdate(CaretEvent e)
{
try
{
int value = Integer.parseInt(field.getText()); if(value > minValue && value < maxValue)
{
//-----DONOTHING-----
}
else
{
System.out.println("input must between "+minValue+" ~ "+maxValue);
}
}
catch(Throwable ex)
{
System.out.println("need input integer value");
}
}});
}把System.out.println都替换成有用的操作就好了。
int min;
int max; public NumberDocument(int mi,int ma)
{
min = mi;
max = ma;
}
//重载Document的插入文本的方法
public void insertString(int offset;String s,AttributSet as)
{
try
{
int value = Integer.parseInt(s); if(value > min && value < max)
{
super.insertString(offset,s,as);
}
}
catch(Throwable ex)
{
}}}按如下使用应该就可以了:
jTextComponent.setDocument(new NumberDocument(min,max));
public class NumberField extends JPane
{
private JTextField numberField = null;
private int min;
private int max;
public NumberField(Container c,int min,int max)
{
numberField = new NumberField(10);
this.min = min;
this.max = max;
numberField.addCaretListener(new CaretListener(){
public void caretUpdate(CaretEvent e)
{
try
{
int value = Integer.parseInt(field.getText());
if(value > minValue && value < maxValue)
{
//-----DONOTHING-----
}
else
{
System.out.println("input must between "+minValue+" ~ "+maxValue);
}
}
catch(Throwable ex)
{
System.out.println("need input integer value");
}
}
});
c.add(numberField);
}
}