我正在尝试创建一个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));