日期:2014-05-20  浏览次数:20595 次

求教一个关于java swing的问题
我想做一个猜数字游戏,当中有一步,就是在输入框JTextFiled中使用了addKeyListner,因为猜数字要求输入的数字是不重复的,类似1234,1356,这样,至于有重复的1223,必须屏蔽,现在能获得其不符合项,但是没法修改其自身的被输入的内容。求个方法。
我是直接创建了一个JTextFiled子类,在 keyTyped中能监听,并确认得知是否输入重复了,但是无法对已输入的内容作出修正,getText()能得到上一次的输入内容,但是setText()却无法修正内容,怎么办呢
package UI;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JTextField;

public class InputTextField extends JTextField {

public InputTextField(int in) {
super(in);
   
addKeyListener(new KeyListener() {

@Override
public void keyTyped(KeyEvent e) {
System.out.println(e.getKeyChar() + "," + getText());
char[] answer = getText().toCharArray();
List match = new ArrayList();
for (int i = 0; i < answer.length; i++) {
match.add(answer[i]);
}
if (match.contains(e.getKeyChar())) {
setText(getText());
System.out.println(e.getKeyChar() + "is already here:"
+ getText());

}

}

@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}

@Override
public void keyPressed(KeyEvent e) {

}
});
}

@Override
public void setText(String t) {
// TODO Auto-generated method stub
super.setText(t);
}
}

------解决方案--------------------
textField.selectAll();