【问题标题】:Set first character in a string to uppercase将字符串中的第一个字符设置为大写
【发布时间】:2014-02-21 13:30:08
【问题描述】:

我想将文本字段中的第一个字符更改为大写。

我有这个:

String output = input.substring(0, 1).toUpperCase() + input.substring(1);

还有这个:

String output = Character.toUpperCase(input.charAt(0)) + input.substring(1);

我应该把它们放在哪里? keyPressed? keyReleased? 请告诉我如何使用它们。

【问题讨论】:

  • 尝试使用addFocusListener
  • 你想自动还是当你按键时?
  • 自动或在我输入之后。
  • @user3337385 好吧,然后使用DocumentFilter 我不知道你为什么不想使用它.. 给我一个理由
  • @user3337385 点赞!

标签: java string jtextfield


【解决方案1】:

使用 DocumentFilter 拦截用户的输入并将其替换为所需的字符

例如

http://www.java2s.com/Tutorial/Java/0240__Swing/FormatJTextFieldstexttouppercase.htm

【讨论】:

  • 我不想使用 DocumentFilter
  • @user3337385 为什么不呢?然后扩展PlainDocument 并覆盖insertString
  • 因为不能用。我不知道怎么做。
【解决方案2】:

这里是addFocusListener的例子;

jTextField.addFocusListener(new FocusListener() {
      public void focusLost(FocusEvent e) {
        //TODO: write here what you want 
      }
});

【讨论】:

  • 那么,我应该把它放在 FocusListener 上吗?
  • 这段代码甚至可以编译..然后使用FocusAdapter,但我不建议使用这个解决方案..
【解决方案3】:

通常,当我们键入名称时,我们应该以大写形式输入名称的第一个字母。所以,在这种情况下,我已经解决了如下代码段所示的问题:

private void jTextFieldKeyTyped(java.awt.event.KeyEvent evt) {
    if (!Character.isAlphabetic(evt.getKeyChar()) && !Character.isSpaceChar(evt.getKeyChar())) {
        evt.consume();
    } else if (jTextField.getText().trim().length() == 0 && Character.isLowerCase(evt.getKeyChar())) {
            evt.setKeyChar(Character.toUpperCase(evt.getKeyChar()));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 2020-01-10
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多