2010-09-15 80 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);