【问题标题】:append a char to a JTextArea将一个字符附加到 JTextArea
【发布时间】:2011-12-25 14:54:41
【问题描述】:

所以我正在制作一个类,它会将字母“输入”到 JTextArea 中,在每个字母之间暂停以使其看起来像是有人在输入。我能想出的唯一方法是在循环中使用 output.append(char) 并暂停。唯一的问题...您只能将字符串附加到 JTextAreas。

那么有什么办法可以将字符转换为字符串,这样我就可以一个字母一个字母地附加它???

到目前为止,这是我的代码:

import objectdraw.*;
import java.awt.*;
import javax.swing.*;

public class TypeWriter extends ActiveObject
                        implements Drawable {

  private char [] letter;
  private JTextArea cp;

  public TypeWriter(String sentence, JTextArea console) {

    /* break string into characters and save the console
     * for later use
     */
    letter = new char[sentence.length()];
    cp = console;

    for(int i=0; i<sentence.length(); i++) {
      letter[i] = sentence.charAt(i);
    }

    start();

  }

  public void run() {

    // append each letter, pausing between them
    for( char s : letter ) {
      cp.append(new String(s));
      pause(50);
    }

  }

  /* More methods for the 
   * Drawable interface...
   */

}

【问题讨论】:

  • 如何将 Java 中的 anything 转换为字符串?以 t 开头,以 g 结尾... ;-) 请注意,到目前为止建议的技术与您的原始代码具有相同(可能)的缺陷...当幻像打字员工作时,您的 UI 被锁定。
  • 是的 .toString() 方法....它不起作用。我收到一个错误,它说... char 不能被取消引用
  • 对不起 - 你可能在一个字符上试过它,而不是一个字符。您需要先转换为字符。编译器对其进行了高度优化的简写版本是仅附加到一个空字符串,例如 - String bar = "" + 'x';.
  • @Ed 好吧,我见过人们使用字符,但不知道字符和字符之间有什么区别。我也知道我的 UI 被锁定了,这对我有利,因为我正在构建一个基于文本的小型冒险游戏。这是我正在做的项目。

标签: java swing char append jtextarea


【解决方案1】:

使用 String(char[] value) 构造函数

String s = "";
s += Character.toString('s');

【讨论】:

    【解决方案2】:

    不要使用字符。

    String foo = "This is a String";
    for (int i = 0; i < foo.length(); i++)
    {
        String subString = foo.substring(i, i+1);
        cp.append(subString);
        pause(50);
    }
    

    【讨论】:

    • 我比我更喜欢你的解决方案
    • 啊,这更有意义。谢谢先生。
    猜你喜欢
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    相关资源
    最近更新 更多