求助:怎样控制JTextField中输入字符的长度? 想知道,怎样控制JTextField输入字符的长度为256个byte多谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以实现Document实现。具体就是重写一个JTextField,重载其中的 protected Document createDefaultModel() { return new 你自己的Document(); }自己实现吧,就提示到这儿了 JTextField.addKeyListener(new KeyListener() { public void keyTyped(KeyEvent e) { if(JTextField.getText().length()>128&&e.getKeyChar()!='\b') { e.setKeyChar('\0'); JOptionPane.showMessageDialog(null, "已达最大长度!"); } } public void keyPressed(KeyEvent e){} public void keyReleased(KeyEvent e){} });在这里我是按String的内码(utf-16)来算你要求的byte数的(1:2)如果你要求的是本地默认字符集,则就JTextField.getText().getBytes().length来判断好了 如何让用户输入超过256个字节之后,再不能输入新的字符重写Document()是输入以后再判断呢,还是输入超过后再判断,请指教! 参考我的代码:import java.awt.Dimension;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JFrame;import javax.swing.JTextField;public class test1 extends JFrame { public test1() { this.setLayout(null); this.setSize(new Dimension(400, 200)); final JTextField txt = new JTextField(); txt.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) { char c = e.getKeyChar(); if (Character.isDigit(c) && txt.getText().trim().length() < 10)//只允许数字,且长度不大于10 return; e.consume(); } }); txt.setBounds(50, 50, 120, 20); this.add(txt); this.setVisible(true); } public static void main(String args[]) { new test1(); }} public Document createDefaultModel() { return new JTextFieldLimit(); }class JTextFieldLimit extends PlainDocument { public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException{ if(str == null) { return; } if((getLength()+str.length())<=256 ) { str = str.toUpperCase(); super.insertString(offset,str,attr); } } }} 单单重写Document也是不行的,还要考虑到copy/paste的功能。 做菜单时二级菜单的图标设计 这个java程序怎么导入图片 求救,怎样配置tomcat呀,主要是我自己编写的程序咋不能显示出来呢,是不是浏览器中的地址错了呀 高分求救!用poi读取Excel中Sheet的标题,如何解决中文的问题,在线等! 好像是JApplet的布局管理问题。多多指教!! 蛋疼的一道java题 网络爬虫被阻止 java sql 语句出错。参数不足,期待得是2 各位,如何用java获取我本地硬盘的总容量和剩于容量???? java 运行问题 崩溃啦。。。救命啊。。。关于Image中DrawString JfreeChart中字体乱码问题!!!十万火急
return new 你自己的Document();
}自己实现吧,就提示到这儿了
JTextField.addKeyListener(new KeyListener()
{
public void keyTyped(KeyEvent e)
{
if(JTextField.getText().length()>128&&e.getKeyChar()!='\b')
{
e.setKeyChar('\0');
JOptionPane.showMessageDialog(null, "已达最大长度!");
}
}
public void keyPressed(KeyEvent e){}
public void keyReleased(KeyEvent e){}
});在这里我是按String的内码(utf-16)来算你要求的byte数的(1:2)
如果你要求的是本地默认字符集,则就JTextField.getText().getBytes().length来判断好了
如何让用户输入超过256个字节之后,再不能输入新的字符
重写Document()是输入以后再判断呢,还是输入超过后再判断,请指教!
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;import javax.swing.JFrame;
import javax.swing.JTextField;public class test1 extends JFrame {
public test1() {
this.setLayout(null);
this.setSize(new Dimension(400, 200));
final JTextField txt = new JTextField();
txt.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (Character.isDigit(c) && txt.getText().trim().length() < 10)//只允许数字,且长度不大于10
return;
e.consume();
}
});
txt.setBounds(50, 50, 120, 20);
this.add(txt);
this.setVisible(true); } public static void main(String args[]) {
new test1();
}
}
public Document createDefaultModel() {
return new JTextFieldLimit();
}class JTextFieldLimit extends PlainDocument {
public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException{
if(str == null)
{
return;
}
if((getLength()+str.length())<=256 ) {
str = str.toUpperCase();
super.insertString(offset,str,attr);
}
}
}
}