java textfield 中如何设置文本长度
答案:6 悬赏:40
解决时间 2021-01-30 12:58
- 提问者网友:血樱陌殇
- 2021-01-29 19:43
如题,比如设置textfield的长度只能输入4个字符。
最佳答案
- 二级知识专家网友:一池湖水
- 2021-01-29 21:04
限制输入文本的长度,可以定制一个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);
}
}
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);
}
}
全部回答
- 1楼网友:陪我到地狱流浪
- 2021-01-30 02:11
java的textField好像不能设置文本长度.我的解决方法是给textField加一个监听器,用户输入的时候就检验长度,输入多于4个字符就subString
- 2楼网友:茫然不知崩溃
- 2021-01-30 01:54
在setText(String str)这里处理下就好了,字符串长度超过4就不让他调super的setText就好了
- 3楼网友:一个很哇塞的汉子
- 2021-01-30 00:34
用size 属性设置长度
- 4楼网友:努力只為明天
- 2021-01-29 22:54
textfield.sethorizontalalignment(swingconstants.left); //指定内容的对齐方式
swingconstants 通常用于在屏幕上定位或定向组件的常量的集合。
leading
标识使用从左到右和从右到左的语言的文本开始边。
trailing
标识使用从左到右和从右到左的语言的文本结束边。
left
用于指定框左侧位置的框方向常量。
right
用于指定框右侧位置的框方向常量。
center
某区域的中心位置。
- 5楼网友:浪女动了心
- 2021-01-29 22:07
这个问题比较难啊,得重写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,而且效率会降低
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯