2010-09-15 81 views
2

我有一個文本區域,當按下輸入按鈕時,我想變爲空白。我知道這通常會用setText方法完成。但是,當我這樣做時,文本被刪除,但按下返回鍵創建的新行功能。我的問題是,是否阻止這種默認行爲發生?按下輸入按鈕時刪除新行功能Java

感謝

+1

這個問題是在難以理解接壤。 – 2010-09-15 13:07:24

+0

您使用的是什麼技術?搖擺 ? awt? HTML?... – 2010-09-15 13:18:22

+1

似乎我可以理解。他清除文本,但在清除後將一個換行符插入到JTextArea中。保羅,是嗎? – DJClayworth 2010-09-15 13:38:43

回答

0

我有一個,我想成爲當按下按鈕,進入空白文本區域。

這個,我明白了。這裏是你如何能做到這一點:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Main { 
    public static void main(String[]args) { 
     final JFrame frame = new JFrame(); 
     final JTextArea area = new JTextArea(); 
     area.setPreferredSize(new Dimension(200, 200)); 
     area.addKeyListener(new KeyAdapter(){ 
      @Override 
      public void keyReleased(KeyEvent e) { 
       if(e.getKeyCode() == KeyEvent.VK_ENTER) { 
        area.setText(""); 
       } 
      } 
     }); 
     frame.add(area); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

我知道這通常會用的setText方法來完成。但是,當我這樣做時,文本被刪除,但按下返回鍵創建的新行功能。我的問題是,是否阻止這種默認行爲發生?

那我不明白。

3

你在聽文本區的ENTER鍵然後清除它嗎?對我來說,以下工作:

final JTextArea ta = new JTextArea(); 
ta.addKeyListener(new KeyListener() { 

    @Override 
    public void keyTyped(KeyEvent e) { 
    } 

    @Override 
    public void keyReleased(KeyEvent e) { 
     if(e.getKeyCode() == KeyEvent.VK_ENTER){ 
      ta.setText(""); 
     } 
    } 

    @Override 
    public void keyPressed(KeyEvent e) { 
    } 
}); 
0

這個問題可能是你沒有消耗的擊鍵事件,雖然文本區域被清除,按鍵的正常處理結束插入一個換行符。

而不是捕獲擊鍵事件(這不一定是便攜式),我會建議使用DocumentFilter。有一個教程,告訴你如何寫一個。實施過濾器,以便在插入或替換字符串中存在「換行符」時,用「」替換文檔的全部內容。

但是,這種方法無法區分鍵盤上輸入的換行符和粘貼到文本區域中的換行符。

-1

我解決了你的問題,覆蓋方法「public void keyTyped(KeyEvent e)」而不是「public void keyPressed(KeyEvent e)」中的代碼,它的工作原理。 下面的代碼:之前您清除您需要刪除新行代碼左邊的返回按鈕上的文本

package versione1; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class WhiteEnter { 
    final JFrame frame = new JFrame(); 
    private JTextArea area = new JTextArea(); 


    public static void main(String[]args) { 

     WhiteEnter prova = new WhiteEnter(); 
     prova.run(); 
    } 

    public void run(){ 
     area.setPreferredSize(new Dimension(200, 200)); 
     area.addKeyListener(new PressEnterKeyListener()); 

     frame.add(area); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public class PressEnterKeyListener implements KeyListener{ 

     @Override 
     public void keyPressed(KeyEvent e) { 
     } 

     @Override 
     public void keyReleased(KeyEvent e) { 
     } 

     @Override 
     public void keyTyped(KeyEvent e) { 

      if (e.getKeyChar() == (KeyEvent.VK_ENTER)){ 
       try{ 
        area.setText(null); 
        area.setCaretPosition(0); 
       } catch(Exception ex){ 
        ex.printStackTrace(); 
       } 
      } 
     } 
    } 
} 
0

。你用consume()方法做到這一點。

因此,要清除文字:

yourkeyevent.consume(); 
yourTextObject.setText(""); 
0

取而代之的是,你還可以使用:

yourTextarea.setText(null); 
yourTextarea.setCaretPosition(-1);