【发布时间】:2012-12-27 12:51:17
【问题描述】:
我是 GUI 编程的新手。在 Java Swing JTextarea 上练习 KeyEvent 处理时,我面临一个问题。监听接口由文本区自己实现。
当我在文本区域按下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);
}
}
【问题讨论】:
-
为了更好的答案,请尽快发布您编写的代码的 sn-p。
-
显示一些你尝试过的代码?
-
因为你是 Swing 的新手,所以不要考虑低级 KeyListeners,而是看看 KeyBinding,它是为 Swing 设计的。要解决这一行,只需使用 JTextField 即可在一行中实现所有内容。
-
当我按下 VK_ENTER + VK_SHIFT 我想创建新行,所以我必须使用 textarea 关于文本字段
标签: java swing jtextarea jtextpane keyevent