按下输入按钮时删除新行功能Java

时间:2010-09-15 13:03:28

标签: java function return

我有一个文本区域,按下输入按钮后我想变成空白。我知道这通常是用setText方法完成的。但是,当我这样做时,文本被删除,但按下返回键创建的新行功能。我的问题是,无论如何都要阻止此默认操作发生?

感谢

6 个答案:

答案 0 :(得分: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) {
    }
});

答案 1 :(得分: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方法完成的。但是,当我这样做时,文本被删除,但按下返回键创建的新行功能。我的问题是,无论如何都要阻止此默认操作发生?

那,我不明白。

答案 2 :(得分:0)

问题可能是您没有消耗击键事件,虽然文本区域被清除,但击键的正常处理最终会插入换行符。

我建议使用DocumentFilter,而不是捕获击键事件(不一定是可移植的)。有一个教程here,向您展示如何编写一个。实现过滤器,以便在插入或替换字符串中有“换行符”时,用“”替换文档的全部内容。

然而,这种方法无法区分键盘上键入的换行符和粘贴到文本区域的换行符。

答案 3 :(得分:0)

在清除文本之前,您需要删除新的行代码,返回按钮。您可以使用consume()方法执行此操作。

所以要清除你的文字:

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

答案 4 :(得分:0)

相反,您也可以使用:

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

答案 5 :(得分:-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();
                }
            }
        }
    }
}