中易网

java textfield 中如何设置文本长度

答案:6  悬赏:40  
解决时间 2021-01-30 12:58
如题,比如设置textfield的长度只能输入4个字符。
最佳答案
限制输入文本的长度,可以定制一个Document:
import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

class JTextFieldLimit extends PlainDocument {
  private int limit;
  JTextFieldLimit(int limit) {
    super();
    this.limit = limit;
  }

  JTextFieldLimit(int limit, boolean upper) {
    super();
    this.limit = limit;
  }

  public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
    if (str == null)
      return;

    if ((getLength() + str.length()) <= limit) {
      super.insertString(offset, str, attr);
    }
  }
}

public class Main extends JFrame {
  JTextField textfield1;

  JLabel label1;

  public void init() {
    setLayout(new FlowLayout());
    label1 = new JLabel("max 10 chars");
    textfield1 = new JTextField(15);
    add(label1);
    add(textfield1);
    textfield1.setDocument(new JTextFieldLimit(10));

    setSize(300,300);
    setVisible(true);
  }
}
全部回答
java的textField好像不能设置文本长度.我的解决方法是给textField加一个监听器,用户输入的时候就检验长度,输入多于4个字符就subString
在setText(String str)这里处理下就好了,字符串长度超过4就不让他调super的setText就好了
用size 属性设置长度
textfield.sethorizontalalignment(swingconstants.left); //指定内容的对齐方式 swingconstants 通常用于在屏幕上定位或定向组件的常量的集合。 leading 标识使用从左到右和从右到左的语言的文本开始边。 trailing 标识使用从左到右和从右到左的语言的文本结束边。 left 用于指定框左侧位置的框方向常量。 right 用于指定框右侧位置的框方向常量。 center 某区域的中心位置。
这个问题比较难啊,得重写JTextField。建议你从头开始学swing。推荐书籍:《java swing》 先给你个我写例子你自己研究吧。我也不知道改怎么解释! import javax.swing.*; import javax.swing.text.* public class ppoo extends JTextField{ public ppoo(int cols) { super(cols); } public ppoo() { super(); } protected Document createDefaultModel() { return new Limit(); } static class Limit extends PlainDocument { @Override public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { if (str == null) { return; } System.out.println(offs); if(offs>=4) { //这是关键,如果偏移量大于4则让传入的字符串为' '就可以了 str=""; } super.insertString(offs, str, a); } } } class Main { public static void main(String[] args) { ppoo p=new ppoo(); JFrame j=new JFrame(); j.setLayout(FlowLayout()); p.setSize(150,100); j.add(p); j.setSize(200,200); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); j.setVisible(true); } } 运行: javac ppoo.java java Main 楼下的方法不太好,容易引起BUG,而且效率会降低
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
明天你是否依然爱我那后面那个英文的中文是什
感觉学车好难呀,求安慰!
DNF,最后一件天空,合出来,还是打算每周签
伊朗通信便宜吗
电影 再见,总有一天 里的钢琴曲是什么呀,求
方差里f0.05 f0.01 分别代表什么,怎么来使用
倩女幽魂的混元金斗(越影)能卖多少钱? 敏捷+
韩城市枣庄乡四年制综合学校地址有知道的么?
中国名著有哪些
华中科技大学通信工程就业情况?
蒙氏教育在中国学前教育实施中存在哪些问题
南京颜真卿碑林
CF中黑鹰角色如何?或者其他永久角色,我需要
为什么QQ空间里说说下面浏览次数有的显示人的
“预祝大会取得圆满成功”用侗族话怎么说?谢
推荐资讯
男士黑色牛仔裤子搭配什么颜色的皮鞋,上身是
别人登录我的apple id我怎么登录
living in the city的九年级英语作文加翻译
ipad如何与电脑无线连接?
本人今年二十一岁,目前从事城市建设工作(说
作文,阅读伴我行
如何评价関ジャニ∞的乐队水平
苹果数据线“未经认证”充不进电,怎么办
从无锡新区到苏州浒关镇怎么走最近
遇言故事有哪些
早泄,怎么办?是不是有种擦纸能延长时间呢?
海尔冰箱随着周围温度变化怎样调温控档
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?