JTextField 如何让一个JTextField只能输入一个字符啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.text.AttributeSet;import javax.swing.text.BadLocationException;import javax.swing.text.PlainDocument; public class Test extends JPanel { public Test() { JTextField jTextField1 = new JTextField(10); jTextField1.setDocument(new MyDocument(1)); add(jTextField1); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new Test()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 500); frame.setLocationRelativeTo(null); frame.setVisible(true); } class MyDocument extends PlainDocument { int maxLength = 1; public MyDocument(int newMaxLength) { super(); maxLength = newMaxLength; } public MyDocument() { this(10); } //重载父类的insertString函数 public void insertString(int offset, String str, AttributeSet a) throws BadLocationException { if (getLength() + str.length() > maxLength) { return; } else { super.insertString(offset, str, a); } } }}试下 也可以用键盘监听器的方法 import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; public class T extends JPanel implements KeyListener { private JTextField jTextField1; public T() { jTextField1 = new JTextField(10); jTextField1.setDocument(new MyDocument(1)); jTextField1.addKeyListener(this); add(jTextField1); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new T()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 500); frame.setLocationRelativeTo(null); frame.setVisible(true); } class MyDocument extends PlainDocument { int maxLength = 1; public MyDocument(int newMaxLength) { super(); maxLength = newMaxLength; } public MyDocument() { this(10); } } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub if(this.jTextField1.getDocument().getLength()>1){ try { this.jTextField1.getDocument().remove(1, this.jTextField1.getDocument().getLength()-1); } catch (BadLocationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent arg0) { // TODO Auto-generated method stub } } 但是,我想能不能用CaretListener来完成啊 用CaretListener可以检测到光标的位置但是在CaretListener的caretUpdate方法中因为没有writelock无法更改textfield的值 跪求用poi将数据库的数据导出到word代码 org.apache.commons java 连接sqlserver数据库问题 大家还上什么java论坛 REST接口并发稍微高点就报java.net.SocketException: Unexpected end of file from server 用JB如何调试纯java语句呀?我刚学java只要能知道运动结果就行了 请问一个调用类的问题 jb7编写代码时,无法录入汉字 SMTP 发信通过验证了,可没有发出信怎么回事?附程序 谢谢!!! 急,急,急,快来看一看!!!! 比较急!用java查询父节点及路径 三目运算符结合方向的疑问
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class Test extends JPanel { public Test() {
JTextField jTextField1 = new JTextField(10);
jTextField1.setDocument(new MyDocument(1));
add(jTextField1);
} public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new Test());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
class MyDocument extends PlainDocument {
int maxLength = 1; public MyDocument(int newMaxLength) {
super();
maxLength = newMaxLength;
} public MyDocument() {
this(10);
} //重载父类的insertString函数
public void insertString(int offset, String str, AttributeSet a)
throws BadLocationException {
if (getLength() + str.length() > maxLength) {
return;
} else {
super.insertString(offset, str, a); }
} }}
试下
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class T extends JPanel implements KeyListener { private JTextField jTextField1; public T() {
jTextField1 = new JTextField(10);
jTextField1.setDocument(new MyDocument(1));
jTextField1.addKeyListener(this);
add(jTextField1);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new T());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
class MyDocument extends PlainDocument {
int maxLength = 1; public MyDocument(int newMaxLength) {
super();
maxLength = newMaxLength;
} public MyDocument() {
this(10);
}
} @Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
if(this.jTextField1.getDocument().getLength()>1){
try {
this.jTextField1.getDocument().remove(1, this.jTextField1.getDocument().getLength()-1);
} catch (BadLocationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
} @Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
} @Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
} }
用CaretListener可以检测到光标的位置但是在CaretListener的caretUpdate方法中因为没有writelock无法更改textfield的值