求助:怎样控制JTextField中输入字符的长度?

yanglei02152003 2009-01-11 09:50:18
想知道,怎样控制JTextField输入字符的长度为256个byte
多谢!
...全文
627 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanglei02152003 2009-01-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lzhw1985 的回复:]
Java code
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 ) {

[/Quote]
就是用类似代码实现了输入控制,谢谢,结贴给分了!
lzhw1985 2009-01-14
  • 打赏
  • 举报
回复

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);
}
}
}
}
dawn023 2009-01-14
  • 打赏
  • 举报
回复
单单重写Document也是不行的,还要考虑到copy/paste的功能。
runshine 2009-01-12
  • 打赏
  • 举报
回复

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来判断好了
gongfuliang 2009-01-12
  • 打赏
  • 举报
回复
可以实现Document实现。

具体就是重写一个JTextField,重载其中的

protected Document createDefaultModel() {
return new 你自己的Document();
}

自己实现吧,就提示到这儿了
bzwm 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yanglei02152003 的回复:]
引用 1 楼 gongfuliang 的回复:
可以实现Document实现。

具体就是重写一个JTextField,重载其中的

protected Document createDefaultModel() {
return new 你自己的Document();
}

自己实现吧,就提示到这儿了


如何让用户输入超过256个字节之后,再不能输入新的字符
重写Document()是输入以后再判断呢,还是输入超过后再判断,请指教!
[/Quote]
参考我的代码:

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();
}
}
yanglei02152003 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gongfuliang 的回复:]
可以实现Document实现。

具体就是重写一个JTextField,重载其中的

protected Document createDefaultModel() {
return new 你自己的Document();
}

自己实现吧,就提示到这儿了
[/Quote]

如何让用户输入超过256个字节之后,再不能输入新的字符
重写Document()是输入以后再判断呢,还是输入超过后再判断,请指教!

62,634

社区成员

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

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