Java 使用Keylistener删除ArrayList中的多个字符
如果删除字符ArrayList的最后一个字符,ArrayList不会比删除字符之前短。因此,我不能删除多个字符Java 使用Keylistener删除ArrayList中的多个字符,java,arraylist,character,Java,Arraylist,Character,如果删除字符ArrayList的最后一个字符,ArrayList不会比删除字符之前短。因此,我不能删除多个字符 public static ArrayList<Character> userLineInput; if (e.getKeyChar() == '\b') { if (!userLineInput.isEmpty()) { userLineInput.remove(userLineInput.size()-1); } } pub
public static ArrayList<Character> userLineInput;
if (e.getKeyChar() == '\b') {
if (!userLineInput.isEmpty()) {
userLineInput.remove(userLineInput.size()-1);
}
}
publicstaticarraylistuserlineinput;
如果(例如getKeyChar()=='\b'){
如果(!userLineInput.isEmpty()){
userLineInput.remove(userLineInput.size()-1);
}
}
有没有一种简单的方法可以删除多个字符?似乎需要定义如下内容:
while(keyIsPressed)
if(thePressedKey == '\b'){
removeOneChar();
}
以下是一个快速解决方案,可以帮助您:
public class RemoveChar extends KeyAdapter {
public static ArrayList<Character> userLineInput;
private boolean isPressed = false;
private int pressedKey = 0;
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while (isPressed)
if (pressedKey == '\b')
removeLastChar();
}
});
@Override
public void keyPressed(KeyEvent e) {
if (!isPressed) {
pressedKey = e.getKeyCode();
t.start();
}
}
@Override
public void keyReleased(KeyEvent e) {
if (isPressed && e.getKeyCode() == pressedKey)
isPressed = false;
}
public void removeLastChar() {
userLineInput.remove(userLineInput.size() - 1);
}
}
public类RemoveChar扩展KeyAdapter{
公共静态ArrayList userLineInput;
私有布尔值isPressed=false;
private int pressedKey=0;
线程t=新线程(新的可运行线程(){
@凌驾
公开募捐{
while(isPressed)
如果(按键=='\b')
removeLastChar();
}
});
@凌驾
按下公共无效键(按键事件e){
如果(!isPressed){
按下键=e.getKeyCode();
t、 start();
}
}
@凌驾
公共无效密钥已释放(密钥事件e){
如果(按&e.getKeyCode()==按键)
isPressed=false;
}
public void removeLastChar(){
userLineInput.remove(userLineInput.size()-1);
}
}
如果第一个条件匹配,它会起作用。我已经尝试过了,但它不起作用。如果您试图删除UI中的字符,请确保您正在更新UI模型,而不仅仅是底层数据结构。但是如果我添加了“System.out.println(userLineInput.toString());”最后,它只输出userLineInput,最多删除一个字符。好的,我的Java文档中的另一个东西也可能会阻止这一点。