我只想做一个textbox类只接受整数..
我做了一些事情,但我认为这还不够。
有人可以帮帮我吗? 感谢...
import java.awt.TextField
public class textbox extends TextField{
private int value;
public textbox(){
super();
}
public textbox(int value){
setDeger(value);
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
答案 0 :(得分:2)
我认为你错过了这里的一点提示,你的代码我还可以打电话 textfield.setText(“我不是数字”);
答案 1 :(得分:1)
由于您必须使用TextArea
,因此TextListener
可能会取得一些成功。添加一个监听器,将输入的字符限制为仅数字。
在伪代码中,事件方法可以这样做:
使用JTextField
更容易,因为您可以替换文档模型或只使用JFormattedTextField
。
答案 2 :(得分:0)
为什么使用TextField?为什么不学习Swing而不是AWT,那么你可以使用JTextField。实际上,您可以使用支持此要求的JFormattedTextField。阅读API并按照示例教程的链接进行操作。
答案 3 :(得分:-1)
当用户尝试输入非数字数据时,它会拒绝删除不是整数的输入。
public class NumericTextField extends JTextField implements KeyListener{
private int value;
public NumericTextField(int value) {
super(value+ "");
this.addKeyListener(this);
}
public NumericTextField() {
super();
this.addKeyListener(this);
}
public Object getValue() {
return value;
}
public void setText(int value) {
super.setText(value + "");
this.value = value;
}
@Override
public void keyPressed(KeyEvent evt) {
}
@Override
public void keyReleased(KeyEvent arg0) {
isValidChar(arg0.getKeyChar());
}
@Override
public void keyTyped(KeyEvent arg0) {
}
//it is not good solution but acceptable
private void isValidChar(char ch){
if(this.getText().length() == 1 && this.getText().equals("-") ){
this.setText("-");
}
else {
if(!isNumeric(Character.toString(ch))){
try{
this.setText(removeNonnumericChar(this.getText(), ch));
}catch(Exception e){
}
}
}
}
private boolean isNumeric(String text) {
try {
Integer.parseInt(text);
return true;
} catch (NumberFormatException e) {
return false;
}
}
//remove nonnumeric character
private String removeNonnumericChar(String text, char ch){
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
if(text.charAt(i) != ch){
sBuilder.append(text.charAt(i));
}
}
return sBuilder.toString();
}
}
这是测试类
public class NumericTextFieldTest extends JFrame {
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
NumericTextFieldTest frame = new NumericTextFieldTest();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public NumericTextFieldTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 200, 150);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
NumericTextField numericText = new NumericTextField();
numericText.setBounds(25, 27, 158, 19);
contentPane.add(numericText);
numericText.setColumns(10);
JLabel lblNumericTextfield = new JLabel("Numeric textField");
lblNumericTextfield.setBounds(37, 12, 123, 15);
contentPane.add(lblNumericTextfield);
}
}