如何动态改变JTextField的值(在线等待) 适应为你的text框,先接受了键盘的输入text.enable(FALSE);不知道行不行? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 text.enable(flase)在什么时候设置呢? 如果你需要的是一个不用输入的textField的话,在new之后设置就行了。 class testKeyListener implements java.awt.event.KeyListener{ int nKeyCode; public void keyPressed(KeyEvent e) {//重载事件 jTextField1.setText(""); } public void keyReleased(KeyEvent e) { nKeyCode=e.getKeyCode(); jLabel1.setText(""+nKeyCode); } public void keyTyped(KeyEvent e) {//测试不到 } } 这是我的代码,如果输入Y,在text框中显示为100y 如何不显示y?public class InputField extends JTextField implements KeyListener{ //触发的键盘事件 private String keyEvent = ""; public InputField() { super(); setBackground(Color.WHITE); setBorder(null); setForeground(Color.BLUE); setFont(new Font("宋体", Font.BOLD, 22)); addKeyListener(this); inputFieldKeyEvent = new InputFieldKeyEvent(); //初始化不可用功能键 keyData = new KeyData(); requestFocus(); } public void keyPressed(KeyEvent event) { int code = event.getKeyCode(); if(code<96 || code>105){ if(code == 89){ setText("100"); } } } public void keyReleased(KeyEvent event) { } public void keyTyped(KeyEvent event) { } public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { requestFocus(); } /** * @param string */ public void setContent(String text) { super.setText(text); }} 建议不用textfield,换成label马上解决问题。如果一定要用textfield,一是可以text.enable(flase),初始化textfield时设即可。或者通过编程实现按键时对象获得光标焦点。 上面说得对象获得焦点是指其他对象,不是你的textfield。 用focusLost焦点释放 或者 直接用addActionListener 在Enter时即可变化 : foryouever(光速兔子) 如果初始化设置为false,那还怎么响应键盘事件呢? 那就让别的对象获得焦点吧(做个隐藏的对象,用来获取焦点),100后面那个j是因为当时焦点在你的文本框上,按下j键肯定会显示出来的;或者将就点,用release() //用户输入字母j文本框中显示100//程序写得草率,但功能已经达到import java.awt.*;import javax.swing.*;import com.borland.jbcl.layout.*;import javax.swing.text.BadLocationException;import javax.swing.text.PlainDocument;import javax.swing.text.AbstractDocument;import javax.swing.text.AttributeSet;/** * <p>Title</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author TTC * @version 1.0 */public class test extends JFrame{ private XYLayout xYLayout1 = new XYLayout(); private JTextField jTextField1 = new JTextField(); public test() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { ///输入检测 jTextField1.setDocument(new TextCheckableDocument()); jTextField1.setText(""); this.getContentPane().setLayout(xYLayout1); this.getContentPane().add(jTextField1, new XYConstraints(96, 92, 138, 29)); } public static void main(String[] args) { (new test()).show(); } /// 关键所在 public class TextCheckableDocument extends PlainDocument{ public TextCheckableDocument(){ super(); } public void insertString( int nOffset, String str, AttributeSet attrSet) throws BadLocationException{ if(str!= null && str.equals("j")){ super.insertString(nOffset,"100",attrSet); } } }} 果然不错,多谢了不过有个小建议,程序里用到的borland的包以后不要用,不通用。 能不能使用keycode,用上面的方法,没有办法得到其它的键,比如home,insert,ctrl等等,如果能得到它们的code,就可以了,有没有办法? 关于 链表 的疑问 打飞机游戏中敌机路线是如何设计的 for ( foo('A'); foo('B')&&(i<2); foo('C'))语句含义? 如何请求OS 管理员身份运行程序? 向大家请教一个关于谓词公式的自动证明问题 如何动态地创建类的实例 Rectangle类的add()方法如何使用 c中的sprintf可以用什么来替代? 怎么在JDK环境下解决SWING的中文显示乱码问题。请教高手!!!! 求解,,, 为什么输出结果为 good gbc 10 只有数组改变了? 有兴趣合伙开发BUG管理系统吗? 请教Java的字符串编码转换
int nKeyCode;
public void keyPressed(KeyEvent e) {//重载事件
jTextField1.setText(""); } public void keyReleased(KeyEvent e) {
nKeyCode=e.getKeyCode();
jLabel1.setText(""+nKeyCode); } public void keyTyped(KeyEvent e) {//测试不到
}
}
public class InputField
extends JTextField
implements KeyListener{ //触发的键盘事件
private String keyEvent = ""; public InputField() {
super(); setBackground(Color.WHITE);
setBorder(null);
setForeground(Color.BLUE);
setFont(new Font("宋体", Font.BOLD, 22)); addKeyListener(this);
inputFieldKeyEvent = new InputFieldKeyEvent();
//初始化不可用功能键
keyData = new KeyData(); requestFocus();
} public void keyPressed(KeyEvent event) {
int code = event.getKeyCode();
if(code<96 || code>105){
if(code == 89){
setText("100");
}
}
} public void keyReleased(KeyEvent event) {
} public void keyTyped(KeyEvent event) {
} public void focusGained(FocusEvent e) {
} public void focusLost(FocusEvent e) {
requestFocus();
} /**
* @param string
*/
public void setContent(String text) {
super.setText(text);
}}
如果一定要用textfield,一是可以text.enable(flase),初始化textfield时设即可。或者通过编程实现按键时对象获得光标焦点。
如果初始化设置为false,那还怎么响应键盘事件呢?
//程序写得草率,但功能已经达到import java.awt.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;/**
* <p>Title</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author TTC
* @version 1.0
*/public class test extends JFrame
{
private XYLayout xYLayout1 = new XYLayout();
private JTextField jTextField1 = new JTextField(); public test()
{
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
///输入检测
jTextField1.setDocument(new TextCheckableDocument());
jTextField1.setText("");
this.getContentPane().setLayout(xYLayout1);
this.getContentPane().add(jTextField1, new XYConstraints(96, 92, 138, 29));
}
public static void main(String[] args)
{
(new test()).show();
}
/// 关键所在
public class TextCheckableDocument extends PlainDocument{
public TextCheckableDocument(){
super();
} public void insertString( int nOffset, String str, AttributeSet attrSet)
throws BadLocationException{
if(str!= null && str.equals("j")){
super.insertString(nOffset,"100",attrSet);
}
}
}
}
不过有个小建议,
程序里用到的borland的包以后不要用,不通用。
用上面的方法,没有办法得到其它的键,比如home,insert,ctrl等等,
如果能得到它们的code,就可以了,有没有办法?