将数组设置为 JTextField 然后删除

Setting array to JTextField then removing

我想要一个用数组 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);
        }
      }
    }
  }
});