【问题标题】:java - How do I display a character array in a JTextFieldjava - 如何在 JTextField 中显示字符数组
【发布时间】:2015-09-16 19:48:36
【问题描述】:

我正在尝试创建一个刽子手游戏,其中将向用户显示破折号,如果他们点击正确的按钮,一个字母将取代破折号。这在我使用控制台输出所有数据时有效,但是在我更改为 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 编码经验,似乎无法找到解决此问题的方法。

【问题讨论】:

  • 您能否详细说明“无论我尝试什么都行不通”?你有错误吗?输出错误?
  • 你得到什么样的错误?
  • 嗯,答案是“首先将其转换为字符串”。不是一个非常有用的问题/标题是吗?根据实际问题使标题意味着

标签: java arrays user-interface character jtextfield


【解决方案1】:

您应该将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); 

注意 .string append 在循环内不好,你可以使用StringBuilder

【讨论】:

  • 使用您的方法创建了一个输出,但它只显示了 1 个破折号,而不是我需要显示的 12 个。
  • @SamerAlabi 你想如何显示它们。如------- - - - 或??
  • 我希望它们显示为 ------
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      相关资源
      最近更新 更多