java - 如何在 JTextField 中显示字符数组

java - How do I display a character array in a JTextField

我正在尝试创建一个刽子手游戏,其中会为用户显示破折号,如果他们单击正确的按钮,一个字母将替换破折号。这在我使用控制台输出所有数据时有效,但在我切换到 GUI 后,无论我尝试什么都不起作用。 JTextField 似乎不接受字符数组。

    private static JTextField txtDashes;
    static char [] dashes = {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'};

            txtDashes = new JTextField();
            txtDashes.setBackground(Color.GRAY);
            txtDashes.setHorizontalAlignment(SwingConstants.CENTER);
            txtDashes.setBorder(javax.swing.BorderFactory.createEmptyBorder());
            txtDashes.setBounds(39, 207, 218, 46);
            gameScreen.add(txtDashes);
            txtDashes.setColumns(10);

            for (int i = 0; i < dashes.length; i++){
                   txtDashes.setText(dashes[i]); //Error occurs here
            } //End of for loop

我只有大约 5 个月的 java 编码经验,似乎无法找到解决此问题的方法。

你应该传递一个 StringsetText() 方法 破折号是 char array.you 无法将字符设置为文本字段。您必须先将字符转换为字符串

使用

txtDashes.setText(String.valueOf(dashes[i])); 

txtDashes.setText(dashes[i] + ""); 

编辑


setText() 替换现有文本并设置新的 text.if 你想显示所有数组字符,首先将它附加到一个字符串抛出一个循环并从循环外部 setText()

像这样

String s="";
for (int i = 0; i < dashes.length; i++){
    s+=dashes[i];
} 
txtDashes.setText(s); 

注意在循环内附加 .string 不好,您可以使用 StringBuilder

您可以使用 Fast Snail 方法,也可以使用 String 而不是 char。

static String [] dashes = {"-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"};

删除代码中的 for 循环。而是使用 Arrays.toString 将数组转换为字符串:

txtDashes.setText(Arrays.toString(dashes));