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