【发布时间】:2013-02-08 05:44:57
【问题描述】:
我尝试使用 NetBeans 在我的 Java.Swing 应用程序中创建一个 JTextArea,以便当我按下 Enter 按钮时。 JTextArea 将显示“BUTTON PRESSED”。
这是我所拥有的:
private void keyPressedEvent(java.awt.event.KeyEvent evt)
{
if(evt.getKeyCode() == KeyEvent.VK_ENTER)
{
System.out.println("HERE"); //For sanity check.
txtArea.setText("BUTTON PRESSED");
System.out.println("HERE AGAIN"); //For sanity check
}
}
我注意到打印语句正在执行,但 txtArea 没有设置文本。
我做了一些研究,认为应该在某个地方调用 evt.consume(),但我不确定它是如何工作的。
编辑:
我尝试将evt.consume() 放在if-block 中,但仍然没有设置文本。
像这样添加关键监听器:
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jTextArea1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
KeyPressedEvent(evt);
}
});
jScrollPane1.setViewportView(jTextArea1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(59, 59, 59)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(175, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(40, 40, 40)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(164, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2)查看键绑定而不是
KeyListener。 3) J2SE 中没有KeyPressedEvent这样的类或方法。复制/粘贴这些东西,而不是编造它们。 -
setText 不起作用时是否有任何错误/堆栈跟踪?
-
没有错误。我更新了OP。我使用 NetBeans 通过 RightClick => Properties => Add Key Pressed Event 来添加 KeyPressed 事件
-
你为什么使用 KeyListener 来监控 enter 键?你应该使用 ActionListetner。无法保证输入外观的“接受”操作
标签: java swing awt jtextarea keylistener