📄 numberonly.java
字号:
package com.user.util;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.AbstractAction;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.text.Keymap;
public class NumberOnly extends JTextField implements KeyListener,
MouseWheelListener {
double stepSize = 1;
Toolkit toolkit = Toolkit.getDefaultToolkit();
public NumberOnly() {
Keymap keymap = getKeymap();
keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0),
new AbstractAction() {
public void actionPerformed(ActionEvent e) {
nextStep();
}
});
keymap.addActionForKeyStroke(KeyStroke
.getKeyStroke(KeyEvent.VK_DOWN, 0), new AbstractAction() {
public void actionPerformed(ActionEvent e) {
previousStep();
}
});
addKeyListener(this);
addMouseWheelListener(this);
setHorizontalAlignment(RIGHT);
}
public void paste() {
// Ctrl-V not allowed here to prevent illegal inputs.
}
public void keyTyped(KeyEvent e) {
char keyChar = e.getKeyChar();
if ((keyChar >= '0' && keyChar <= '9') // Digits
|| (keyChar == '-' && getCaretPosition() == 0 && getText()
.indexOf("-") == -1) // Sign
|| (keyChar == '.' && getText().indexOf(".") == -1) // Radix
// point
|| (keyChar == '\b') // Backspace
) {
return;
}
toolkit.beep();
e.consume(); // Stop the illegal inputs from being added to the text
// field.
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public void mouseWheelMoved(MouseWheelEvent e) {
if (e.getWheelRotation() < 0) {
nextStep();
} else {
previousStep();
}
}
public double getStepSize() {
return stepSize;
}
public void setStepSize(double s) {
stepSize = s;
}
public void nextStep() {
try {
double value = getDouble();
String newText = String.valueOf(value + stepSize);
setText(((int) value == value) ? newText.substring(0, newText
.indexOf(".")) : newText);
} catch (NumberFormatException e) {
}
}
public void previousStep() {
try {
double value = getDouble();
String newText = String.valueOf(value - stepSize);
setText(((int) value == value) ? newText.substring(0, newText
.indexOf(".")) : newText);
} catch (NumberFormatException e) {
}
}
public double getDouble() throws NumberFormatException {
return Double.parseDouble(getText());
}
public float getFloat() throws NumberFormatException {
return Float.parseFloat(getText());
}
public int getInt() throws NumberFormatException {
return Integer.parseInt(getText());
}
public long getLong() throws NumberFormatException {
return Long.parseLong(getText());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -