我尝试使用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
}
}
我注意到print语句正在执行,但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>
答案 0 :(得分:5)
适合我。你是如何添加keylistener的?
public class TextAreaTest extends KeyAdapter {
private JFrame frame = new JFrame("Text Area Test");
private JTextArea area = new JTextArea();
public static void main(String[] args) {
TextAreaTest test = new TextAreaTest();
test.go();
}
private void go() {
area.addKeyListener(this);
frame.getContentPane().add(area);
frame.setVisible(true);
}
@Override
public void keyPressed(KeyEvent evt) {
if(evt.getKeyCode() == KeyEvent.VK_ENTER)
{
System.out.println("HERE"); //For sanity check.
area.setText("BUTTON PRESSED");
System.out.println("HERE AGAIN"); //For sanity check
}
}
}