循环多个JTextFields的Java getText



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

我的代码:

包视图;

导入javax.swing.*;

公共类OptionPlayerNames{

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

//JTextField playerNames=新的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个文本。当然,我只添加了一个字段。

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

谢谢你的帮助。

您可以执行以下操作,创建JTextField:的List

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;
}

您需要将VectorJTextField的数组声明为实例变量(而不仅仅是一个,如您所注释的),并在循环时填充它。然后您可以随机(任意)访问任何文本值。方便的是,索引i已经存在,您可以对数组进行索引。

需要注意的是,类型:JTextField是单数,但变量名:playerNames是复数。:-)

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

虽然这会起作用,但最终,整个代码块并不能很好地分离Model&视图,所以当你在编程中前进时,一定要注意这个概念。

相关内容

  • 没有找到相关文章

最新更新