0

NetBeansを使用してJava.SwingアプリケーションでJTextAreaを作成しようとしたので、Enterボタンを押したときに。JTextAreaには「BUTTONPRESSED」と表示されます。

これが私が持っているものです:

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>
4

1 に答える 1

5

私のために働きます。どのようにキーリスナーを追加していますか?

テスト プログラムのスクリーンショット

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
    }
  }

}
于 2013-02-22T15:20:38.353 に答える