JTextField txtUsr = new JTextField(10);
JPassWordField txtPwd = new JPassword(10);
这里的10并不是设置可以输入的字节数或个数,实际它并不限制输入多少,可以无限输入;它只是设置外观看起来的长度而已。
想要限制其输入个数或者只能输入字母或数字,可以通过事件监听,或者覆盖Document类。
嗯,再说吧。。。。。
终于来电了,今天居然停了半天的电啊
对于上述问题的解决,首先考虑从JTextField自带的函数解决
首先查看它有的带有Set字样的函数。
SetSize()是设置组件本身大小,顺带看了下这个函数的效果,可是不见变化啊。
暂时是找不到好的解决办法,只能事件监听了
txtUsr.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
JTextField txt = (JTextField)e.getSource();
if(txt.getText().length()>10)
{
JOptionPane.showMessageDialog(null, "密码已达最大长度!");
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
});
原本我是if(txtUsr.getText().length()>10)但是报错,说是不在同一个类里面。只能通过KenEvent e这个参数来解决了,如上述所示。
有件奇怪的事,JTextField txtUsr = new JTextField("luoye",10);
在显示的时候,不能显示任何组件。 然后改变窗口大小或者最小化后在打开,就能正常显示了。于是我在JFrame构造函数末尾加上repaint(); 问题任然没得到解决,于是我改为JTextField txtUsr = new JTextField(10);就正常了。