如何在JTextField中显示字符数组



我正在尝试创建一个hangman游戏,其中会为用户显示破折号,如果用户单击正确的按钮,则会用一个字母代替破折号。当我使用控制台输出所有数据时,这是有效的,但在我改用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编程经验,似乎找不到解决这个问题的方法。

您应该将String传递给setText()方法破折号是一个char数组。您不能将字符设置为文本字段。您必须先将字符转换为字符串

使用

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

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

编辑


setText()替换现有文本并设置新文本。如果要显示所有数组字符,请先将其附加到字符串中,抛出一个循环,然后从循环外setText()

像这个

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

注意.在循环中附加字符串是不好的,您可以使用StringBuilder来实现

您可以使用Fast Snail方法,也可以使用String代替char。

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

删除代码中的for循环。相反,使用Arrays.toString将数组转换为String:

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

相关内容

  • 没有找到相关文章

最新更新