如何真正实现屏蔽键盘输入的jtextfield。。。。。。。高分。。急

红烧蹄膀饭 2009-06-28 07:27:06
我给jtextfield添加了 键盘监控,将获的的值用setText()副给jtextfield但是,问题是每次jtextfield接受一个键盘值后总是再后面多显示一个小写的字母,比方我按下A ,用setText给文本框后,总是多出一个a结果就是:A aaa...我想只接受setText的值,而不要直接输入的值应该怎么弄呢。我不要setEditabled..灰掉
要看上去还有光标。
...全文
216 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
红烧蹄膀饭 2009-06-29
  • 打赏
  • 举报
回复
恭喜你,回答正确,
gentalguo 2009-06-29
  • 打赏
  • 举报
回复
如果你说的是键盘的事件。那就在keyPressed和keyReleased方法里进行相应操作。
红烧蹄膀饭 2009-06-29
  • 打赏
  • 举报
回复
就是7楼的效果了,先不结贴,有同样问题的可以参考7楼
gentalguo 2009-06-29
  • 打赏
  • 举报
回复
请说的详细一些。你说什么什么按下释放?
最好举个例子,说明你的意图。
红烧蹄膀饭 2009-06-29
  • 打赏
  • 举报
回复
可是实现了keytyped 后,怎么判断是按下还是释放??
gentalguo 2009-06-29
  • 打赏
  • 举报
回复
我确实不知道你这样做的原因,但我想也许你有你的理由吧。
你要屏蔽键盘输入是非常简单,但是,具体操作起来可就费劲了。
你可以这样
f.setActionMap(null);或者field.setInputMap(JComponent.WHEN_FOCUSED, null);
这样,键盘输入不起作用了。但是使用监听仍然可以捕获键盘事件。
不过,在处理一些特殊键的时候会比较复杂,比如组合键,delete键。一般不建议将一个控件的所有inputMap和ActionMap都清掉。但是似乎你所说的却又完全是都去掉的样子~~

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class TextFieldTest {

public static void main(String args[]) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTextField field = new JTextField(20);
Container c = f.getContentPane();
c.setLayout(new BorderLayout());
c.add(field);

field.setInputMap(JComponent.WHEN_FOCUSED, null);
field.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
//这里自己看怎么玩吧
System.out.println(e.getKeyChar());
}
});
f.pack();
f.setVisible(true);
}
}

sjkof 2009-06-29
  • 打赏
  • 举报
回复
实现keyTyped函数,并且调用keyevent.consume();
zuijiejina 2009-06-29
  • 打赏
  • 举报
回复
楼主具体想要实现什么功能呢?看得我有点云里雾里的,若是想直接输入就一个jtextarea就可以了,若是想截获键盘按键,那和jtextarea没有关系啊,干吗监听jtextarea的键盘按键呢。。。有些困惑
红烧蹄膀饭 2009-06-28
  • 打赏
  • 举报
回复
请您给个代码看看


我是这么写的:
public class KeyAdapterImpl extends KeyAdapter {
// do something .. .
}

JTextField jf = new JTextField(5);
jf.addKeyListener(new KeyAdapterImpl());
zuijiejina 2009-06-28
  • 打赏
  • 举报
回复
如果是要接受keylistener的值而不在textfiled里显示的话,就在触发按键的事件里,对textfield进行处理。
比如,每次在接受完键盘的按键后,textfield调用setText("");
红烧蹄膀饭 2009-06-28
  • 打赏
  • 举报
回复
我添加了 keyListener
young_smile 2009-06-28
  • 打赏
  • 举报
回复
给这个JtextFeild添加事件监听试试。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧