【问题标题】:Java getText of looped multiple JTextFields循环多个 JTextFields 的 Java getText
【发布时间】:2015-03-05 20:08:32
【问题描述】:

我在这里的第一个问题。已经得到了很多帮助,但现在我不知道该怎么做。

我的代码:

包视图;

导入 javax.swing.*;

公共类 OptionPlayerNames {

JPanel playerPanel = new JPanel();
JTextField playerNames = new JTextField();

public OptionPlayerNames() {
    for (int i = 0; i < 8; i++) {

// JTextField playerNames = new JTextField();

playerPanel.add(new JLabel("Player " + (i + 1))); playerPanel.add(playerNames); } playerPanel.setLayout(new BoxLayout(playerPanel, BoxLayout.Y_AXIS)); playerPanel.add(Box.createHorizontalStrut(5)); } public JPanel getPanel(){ return playerPanel; } public String getPlayerNames() { return playerNames.getText(); }

我想有 8 个 Jlabels,下面有 8 个 JTextFields 供用户输入。 然后获取文本字段的文本。 现在我从 1 个文本字段中只得到 1 个文本。当然,我只添加 1 个字段。

当我将 JTextField 放在 for 循环下时,我得到了我想要的,但是如何从所有 JTextField 中获取文本呢?然后在 getter 中不知道 playerNames。

感谢您的帮助。

【问题讨论】:

  • 在您的循环中,创建标签、文本字段,并向文本字段添加一个动作侦听器,当字段中的文本发生更改时,该侦听器将更新相应标签的值。将小部件添加到您的面板并重复。

标签: java for-loop jtextfield user-input getter


【解决方案1】:

您可以执行以下操作,创建一个Listof JTextField:

JPanel playerPanel = new JPanel();
List<JTextField> playerNames = new ArrayList<JTextField>();

public OptionPlayerNames() {
    for (int i = 0; i < 8; i++) {
        JTextField playerName = new JTextField();

        playerPanel.add(new JLabel("Player " + (i + 1)));
        playerPanel.add(playerName);

        playerNames.add(playerName);
    }
    playerPanel.setLayout(new BoxLayout(playerPanel, BoxLayout.Y_AXIS));
    playerPanel.add(Box.createHorizontalStrut(5));
}

public JPanel getPanel() {
    return playerPanel;
}

public String getPlayerNames() {
    String output = "";
    // Compound you exit from the playerNames List
    // Or better, return a List of String
    return output;
}

【讨论】:

    【解决方案2】:

    您需要将Vector 或JTextField 数组声明为实例变量(不仅仅是一个,正如您已注释掉的那样)并在循环时填写它。然后您可以随机(任意)访问任何文本值。方便的是,索引 i 已经在那里供您索引到数组中。

    应该提示类型:JTextField 是单数,但您的变量名称:playerNames 是复数。 :-)

    请注意,getPlayerNames() 也需要重新处理以处理数组而不是单个字段。

    虽然这会起作用,但最终,整个代码块并不能很好地分离模型和视图,因此在您进行编程时,请务必注意该概念。

    【讨论】:

      猜你喜欢
      • 2022-07-26
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 2015-05-22
      • 2011-05-25
      • 1970-01-01
      相关资源
      最近更新 更多