我是 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/