我想获得一个装有数组A-Z的JTEXTFIELD。然后,当用户按下例如p在键盘上,该信将从JTEXTFIELD中删除。
到目前为止,我只有以下内容,我知道这是不亲密的,所以很抱歉(我知道这是行不通的(。
tf_1 = new JTextField();
String[] alphabet = {"A", "B" //etc};
tf_1.setText(alphabet);
tf_1.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
// Remove letter if typed.
}
}
在关键侦听器中,如何添加代码以从字母数组中删除键入字母?
不太好,但是工作
//Frame maninFr = new Frame();
JTextField tf_1 = new JTextField();
//maninFr.add(tf_1);
//maninFr.show();
String[] alphabet = {"A","B"};
tf_1.setText(Arrays.toString(alphabet));
tf_1.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {
String input = tf_1.getText();
char pressed = e.getKeyChar();
String newInput = input.replaceAll(Character.toString(pressed), "");
System.out.println("pressed: " + pressed);
System.out.println("newin : " + newInput);
tf_1.setText(newInput);
}
@Override
public void keyPressed(KeyEvent e) {}
});
我希望您的要求是收听密钥输入事件,然后从字母数组中删除,输入字符。请检查以下代码。
JTextField tf_1 = new JTextField();
String[] alphabet = { "A", "B" };
ArrayList<String> list = new ArrayList<>(Arrays.asList(alphabet));
tf_1.setText(alphabet.toString());
tf_1.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
int id = e.getID();
String keyString;
if (id == KeyEvent.KEY_TYPED)
{
char c = e.getKeyChar();
keyString = c+"";
for (int i = 0; i < alphabet.length; i++)
{
if (alphabet[i].equalsIgnoreCase(keyString))
{
list.remove(i);
}
}
}
}
});