java - JTextArea 上的 KeyEvent 问题

标签 java swing jtextarea jtextpane keyevent

我是 GUI 编程的新手。在 Java Swing JTextarea 上练习 KeyEvent 处理时,我遇到了一个问题。监听器接口(interface)由文本区域本身实现。

当我在文本区域中按下 VK_ENTER 键时,我从文本区域获取文本,然后将该文本显示到 JTextPane 中。之后我在文本区域将文本设置为空字符串。在这里,我使用了 keyPressed 键事件 - 它在文本区域中创建了一个新行,但我已经将文本区域行设置为 0(零)。

实际上我想要文本区域中的一行我不想要文本区域中的两行,如何解决这个问题?

这是我的代码:

public void keyPressed(KeyEvent evt) {

   try {
       if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
           if (evt.isShiftDown()) {  
              textArea .setText(textArea.getText() + "\n");
           } else {   
                inputMsg = textArea.getText().trim();
                textArea.setText(EMPTYSTRING);
                if (!inputMsg.equals(EMPTYSTRING)) {   
                   textPane.setText(inputMsg);
                }
                textArea.requestFocus();
              }
          }
     } catch (Exception ex) {
         logger.log(Level.SEVERE, "Exception in textArea.keyReleased() : ", ex);
     }
}

最佳答案

Actually I want one row in textarea I don't want two line in textarea, How to resolve this problem?

那你为什么要用textarea?,用JTextField

编辑提问者评论后:

当您在 keyPressed 方法中提供您的逻辑时,就会出现额外的新行。当您释放该键时,ENTER 会影响文本区域(通过为 ENTER 添加新行)。

您可以在 public void keyReleased(java.awt.event.KeyEvent evt) 方法中尝试您的逻辑,它应该有效。

其他方法可能是在您的逻辑之后在按下事件中使用释放事件,但我不确定如何。

关于java - JTextArea 上的 KeyEvent 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14055039/

相关文章:

java - 复制字符串中的字符

java - 在eclipse Java中安装chromedriver

java - 如何将字符串从工作线程发送到文本区域?

java - `Leaderboard` 选项卡未显示在 Google Play 游戏中,而 `Achievements` 选项卡存在

java - JAVA搜索引擎的数据结构?

Java swing 键绑定(bind)

java - 如何更改 JTextPane 中特定符号的颜色 [java]

java - 如何在 Swing 中正确移动绘制的多边形

java - 将面板和文本框放在同一个框架中

java - 文本区域或选项 Pane 中的两列