?? numberfield.java
字號:
/*
$Author: $
$Date: $
$Revision: $
$NoKeywords: $
*/
package jp.co.ntl.awt;
import java.awt.TextField;
import java.awt.event.*;
import java.awt.*;
public class NumberField extends TextField {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int UINT = 0;
public static final int UFLOAT = 1;
public static final int INT = 2;
public static final int FLOAT = 3;
static final int VALID_NUMBER = 0;
static final int NO_NUMBER = 1;
static final int SMALL_NUMBER = 2;
static final int BIG_NUMBER = 3;
int figure; //寘悢
int type;
boolean validRange = false;
float minimum = 0;
float maximum = 0;
boolean validEffective = false;
int effective = 0; //桳岠悢帤
public NumberField(int figure, int type, float minimum, float maximum) {
super(figure);
this.figure = figure;
this.type = type;
validRange = true;
this.minimum = minimum;
this.maximum = maximum;
enableEvents(AWTEvent.KEY_EVENT_MASK);
}
public NumberField(int figure, int type) {
super(figure);
this.figure = figure;
this.type = type;
validRange = false;
enableEvents(AWTEvent.KEY_EVENT_MASK);
}
public NumberField(int figure) {
this(figure, UINT);
}
public void setEffective(int effective) {
validEffective = true;
this.effective = effective;
}
public float getMinimum() {
return minimum;
}
public float getMaximum() {
return maximum;
}
public void setValue(float value) {
switch (type) {
case UINT:
case INT:
int i = (int)value;
setText("" + i);
break;
case UFLOAT:
case FLOAT:
setText("" + value);
break;
}
}
public void setValue(int value) {
setText("" + value);
}
public float getFloatValue() throws NumberFormatException {
return Float.valueOf(getText()).floatValue();
}
public int getIntValue() throws NumberFormatException {
return Integer.parseInt(getText());
}
public void clear() {
setText("");
}
protected void processKeyEvent(KeyEvent ke) {
if (ke.getID() == KeyEvent.KEY_PRESSED) {
String text = getText();
switch (ke.getKeyChar()) {
case '.':
if (type == INT || type == UINT) {
ke.consume();
}
break;
case '-':
if (type == INT || type == FLOAT) {
if ((getSelectedText().length() != getText().length()) && (getCaretPosition() != 0)) {
ke.consume();
}
} else {
ke.consume();
}
break;
case '0':
if (text.length() != 0 && getSelectedText().length() == 0) {
if ((getCaretPosition() == 0 && text.indexOf('.') != 0)
|| (getCaretPosition() == 1 && text.charAt(0) == '0')) {
ke.consume();
break;
}
}
case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
if (getSelectedText().length() == 0) {
if (text.length() >= figure) {
ke.consume();
} else if (validEffective) {
int pos = text.indexOf('.');
if (pos != -1) {
if (getCaretPosition() > pos && text.length() - pos - 1 >= effective) {
ke.consume();
}
}
}
}
break;
default:
switch (ke.getKeyCode()) {
case KeyEvent.VK_BACK_SPACE:
case KeyEvent.VK_DELETE:
case KeyEvent.VK_TAB:
case KeyEvent.VK_LEFT:
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_SHIFT:
case KeyEvent.VK_END:
case KeyEvent.VK_HOME:
case KeyEvent.VK_ENTER:
break;
default:
ke.consume();
}
}
}
super.processKeyEvent(ke);
}
/* private int validNumber(String text) {
if (text.length() == 0) {
return VALID_NUMBER;
}
try {
// float f = Float.valueOf(text).floatValue();
/*
if (validRange) {
if (f < minimum) {
return SMALL_NUMBER;
} else if (f > maximum) {
return BIG_NUMBER;
}
}
*/
/* return VALID_NUMBER;
} catch (Exception e) {
//惓偟偄悢抣偱偼側偄
return NO_NUMBER;
}
}*/
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -