主题:swing组键问题
8500708
[专家分:120] 发布于 2006-12-13 20:21:00
请问要如何才能限定swing组键当中的jTextField输入的字符数啊!也就是说只允许输入的字符数为10个时,输入第十一个就不显示出来了!但是可以做删除字符的行为
回复列表 (共7个回复)
沙发
michyifeng [专家分:150] 发布于 2006-12-13 21:24:00
JTextField jtf=new JTextField(10);
板凳
zhangheng77 [专家分:5510] 发布于 2006-12-13 22:10:00
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class Checkboxx extends JFrame {
private JTextField aJTextField;
public Checkboxx() {
createUserInterface();
}
private void createUserInterface() {
Container contentPane = getContentPane();
contentPane.setLayout(null);
JTextComponent aJTextField = new JTextField();
aJTextField.setBounds(240, 86, 165, 42);
aJTextField.setDocument(new FixedSizePlainDocument(10));
contentPane.add(aJTextField);
setTitle("check"); // set title bar text
setSize(575, 220); // set window size
setVisible(true);
// display window
}
public static void main(String args[]) {
new Checkboxx();
}
class FixedSizePlainDocument extends PlainDocument {
int maxSize;
public FixedSizePlainDocument(int limit) {
maxSize = limit;
}
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if ((getLength() + str.length()) <= maxSize) {
super.insertString(offs, str, a);
} else {
throw new BadLocationException(
"Insertion exceeds max size of document", offs);
}
}
}
}
3 楼
zhangheng77 [专家分:5510] 发布于 2006-12-13 22:14:00
或者
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class Checkboxx extends JFrame {
private JTextField aJTextField;
public Checkboxx() {
createUserInterface();
}
private void createUserInterface() {
Container contentPane = getContentPane();
contentPane.setLayout(null);
JTextComponent aJTextField = new JTextField();
aJTextField.setBounds(240, 86, 165, 42);
aJTextField.setDocument(new TextLenghtLimitedDocument(10));
contentPane.add(aJTextField);
setTitle("check"); // set title bar text
setSize(575, 220); // set window size
setVisible(true);
// display window
}
public static void main(String args[]) {
new Checkboxx();
}
public class TextLenghtLimitedDocument
extends javax.swing.text.PlainDocument {
int maxSize;
TextLenghtLimitedDocument(int limitLength) {
maxSize = limitLength;
}
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if ((getLength() + str.length()) <= maxSize) {
super.insertString(offs, str, a);
} else {
throw new BadLocationException(
"Insertion exceeds max size of document", offs);
}
}
}
}
4 楼
8500708 [专家分:120] 发布于 2006-12-14 09:29:00
michyifeng说的不能实现,但能回个帖~!再怎么我也给了10分!zhangheng77方法有些复杂了!有简单点的方法没啊!大哥
5 楼
supercrsky [专家分:580] 发布于 2006-12-14 22:53:00
JTextField jtf=new JTextField();
if(jtf.length()<=10)
{
//执行语句
}
6 楼
忍狂侠小强 [专家分:10] 发布于 2007-11-03 14:18:00
有个......NumberFormat...类可以实现《java核心技术》中有这个
7 楼
行者买刀 [专家分:550] 发布于 2007-12-07 15:28:00
有一个方便的方法
监听JTextField的键盘事件.
JTextField jt = new JTextField();
jt.addKeyListener(new KeyListener(){
public void keyTyped(KeyEvent e){
if(jt.getText().length()>10){
e.consume();
}
}
}
还有一种可能性就是用户可能采用复制,粘贴方式,所以你还可以添加监听,或者启动一个线程,监听用户输入,不过这样比较麻烦就是了
我来回复