【问题标题】:How to find out which textfield was typed into by the user in a Java JtextField?如何找出用户在 Java JtextField 中输入了哪个文本字段?
【发布时间】:2013-12-19 03:15:35
【问题描述】:

我有以下代码:

    int[] matrix = new int[9][9];

    (for int x = 0; x <= 8; x++){
        (for int y = 0; y <= 8; x++){
             JtextField matrix[x][y] = new JtextField(“Matrix" x + y)
             int[] coords = new int[2];
             coords[0] = x;
             coords[1] = y;
             matrix[x][y].putClientProperty("coords", coords);
             matrix[x][y].setText(game[x][y]);
         }
     }

循环结束后,我需要一种方法来找出用户输入的文本字段(用户也按回车键)。所以: 1. 如何检查一个 JtextField 是否已被编辑而不知道它是哪一个或它的名称? 2.如何检查文本字段位于哪些“坐标”?我知道如何做到这一点,但由于某种原因我无法对其进行编码。

我觉得答案就在眼前,但为时已晚,我累了,我开始慌了。谢谢!

【问题讨论】:

  • 在您的文本字段中添加一个侦听器,以了解用户输入的是哪一个。

标签: java arrays swing matrix jtextfield


【解决方案1】:

答案取决于你想要达到的目标。

如果您只对最终结果感兴趣,您可以使用 ActionListener(当用户点击 Enter 时)和 FocusListener 用于当他们不点击并离开以任何方式字段(假设您想知道这一点)

当相应事件发生时,您可以使用getSource 检查事件的source。现在返回Object,但您可以使用instanceof 来确定对象是否可以转换为JTextField...

例如...

Object source = evt.getSource();
if (source instanceof JTextField) {
    JTextField field = (JTextField)source;
    int[] coords = field.getClientProperty("coords");
}

查看How to write an Action ListenerHow to write a Focus Listener 了解更多详情。

根据你的需要,你也可以看看Validating Input

【讨论】:

  • 谢谢 - 这实际上是非常有用的信息。发帖后我发现我的代码中有一些令人尴尬的错误,哦,好吧
  • 很高兴听到你离最终游戏更近了一点;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多