Java 循环多个 JTextField 的 getText
Java getText of looped multiple JTextFields
这是我的第一个问题。已经得到了很多帮助,但现在我不知道该怎么做。
我的代码:
包视图;
导入javax.swing.*;
public class 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 中获取文本呢? playerNames 在 getter.
中是未知的
感谢您的帮助。
您需要将 Vector
或 JTextField
的数组声明为实例变量(不只是一个,正如您注释掉的那样)并在循环时填充它。然后您可以随机(任意)访问任何文本值。方便的是,索引 i
已经存在,供您索引到数组中。
应该提示类型:JTextField
是单数,但您的变量名称:playerNames
是复数。 :-)
请注意,getPlayerNames()
也需要重新执行以处理数组而不是单个字段。
虽然这会奏效,但最终整个代码块并不能很好地分离模型和视图,因此在您进行编程时,一定要注意这个概念。
您可以执行以下操作,创建 List
of 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;
}
这是我的第一个问题。已经得到了很多帮助,但现在我不知道该怎么做。
我的代码:
包视图;导入javax.swing.*;
public class 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 中获取文本呢? playerNames 在 getter.
中是未知的感谢您的帮助。
您需要将 Vector
或 JTextField
的数组声明为实例变量(不只是一个,正如您注释掉的那样)并在循环时填充它。然后您可以随机(任意)访问任何文本值。方便的是,索引 i
已经存在,供您索引到数组中。
应该提示类型:JTextField
是单数,但您的变量名称:playerNames
是复数。 :-)
请注意,getPlayerNames()
也需要重新执行以处理数组而不是单个字段。
虽然这会奏效,但最终整个代码块并不能很好地分离模型和视图,因此在您进行编程时,一定要注意这个概念。
您可以执行以下操作,创建 List
of 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;
}