怎样限制对JTextField可输入数据范围进行限制? 现在该控件的可输入数据为:【1,356】,怎样可对其进行动态限制?如:357等不可输入! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看这个吧.import javax.swing.*;import javax.swing.text.*;import java.awt.*;public class TestText { public static void main(String[] args) { TextTestFrame frame = new TextTestFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.pack(); }}class TextTestFrame extends JFrame { private WxtIntegerTextField field; public TextTestFrame() { setTitle("TextTest"); JPanel panel = new JPanel(); add(panel); field = new WxtIntegerTextField(); field.setColumns(3); JLabel label = new JLabel("输入(1-356): "); panel.add(label); panel.add(field); }}class WxtIntegerTextField extends JTextField { private WxtIntegerDocument plainDoc = null; public WxtIntegerTextField() { super(); setDocument(plainDoc = new WxtIntegerDocument(this)); setHorizontalAlignment(JTextField.RIGHT); }}class WxtIntegerDocument extends PlainDocument { private JTextComponent myComponent = null; public WxtIntegerDocument(JTextComponent txtComponent) { myComponent = txtComponent; } public void insertString(int offset, String s, AttributeSet attributeSet) throws BadLocationException { if (s != null) { StringBuffer buffer = new StringBuffer(s); for (int i = buffer.length() - 1; i >= 0; i--) { char ch = buffer.charAt(i); if (!Character.isDigit(ch) && ch != ',') buffer.deleteCharAt(i); } s = buffer.toString(); } super.insertString(offset, s, attributeSet); } public void replace(int offset, int length, String s, AttributeSet attributeSet) throws BadLocationException { String Value = myComponent.getText(); String str = ""; String Result = ""; if (myComponent.getText().length() > 0) { str = myComponent.getText().substring(0, 1); if (s.equals("-")) { if (offset == 0 && !(str.equals("-"))) { Result = s + Value; } else { Toolkit.getDefaultToolkit().beep(); // Transfer the System's // ring return; } } else { Result = Value.substring(0, offset) + s + Value.substring(offset); } } else { if (s.equals("-")) { // super.insertString(offset, s, attributeSet); Toolkit.getDefaultToolkit().beep(); // Transfer the System's // ring return; } else { Result = s; } } try { long value = Long.parseLong(Result); if (value > 356 || value <= 0) { Toolkit.getDefaultToolkit().beep(); // Transfer the System's // ring return; } } catch (Exception ex) { Toolkit.getDefaultToolkit().beep(); // Transfer the System's ring return; } super.replace(offset, length, s, attributeSet); }} 求一个 钩子钩键盘的实例(JNA) JPanel在被载入后为什么不会自动重绘 如何使用fjreport.0.4.3.jar 请问一个JTextPanel的问题,大家帮忙看看 求助关于synth的问题 eclipse想说爱你是不容易的事 在国内站点,那里可以下载最新版的apache? Jbuilder作的应用程序如何在命令行下执行? htmlparse抓取网页里面的想要信息 jdk安装问题 一个奇怪的问题啊!!想获得自己web应用所在服务器的外网ip~~查看了很多~下面的方法都不行 Eclipse3.3和JBuilder2007没有应用程序开发吗?
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;public class TestText {
public static void main(String[] args) {
TextTestFrame frame = new TextTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
}
}class TextTestFrame extends JFrame {
private WxtIntegerTextField field; public TextTestFrame() {
setTitle("TextTest");
JPanel panel = new JPanel();
add(panel);
field = new WxtIntegerTextField();
field.setColumns(3);
JLabel label = new JLabel("输入(1-356): ");
panel.add(label);
panel.add(field);
}
}class WxtIntegerTextField extends JTextField {
private WxtIntegerDocument plainDoc = null; public WxtIntegerTextField() {
super();
setDocument(plainDoc = new WxtIntegerDocument(this));
setHorizontalAlignment(JTextField.RIGHT);
}
}class WxtIntegerDocument extends PlainDocument {
private JTextComponent myComponent = null; public WxtIntegerDocument(JTextComponent txtComponent) {
myComponent = txtComponent;
} public void insertString(int offset, String s, AttributeSet attributeSet)
throws BadLocationException {
if (s != null) {
StringBuffer buffer = new StringBuffer(s);
for (int i = buffer.length() - 1; i >= 0; i--) {
char ch = buffer.charAt(i);
if (!Character.isDigit(ch) && ch != ',')
buffer.deleteCharAt(i);
}
s = buffer.toString();
}
super.insertString(offset, s, attributeSet);
} public void replace(int offset, int length, String s,
AttributeSet attributeSet) throws BadLocationException {
String Value = myComponent.getText();
String str = "";
String Result = "";
if (myComponent.getText().length() > 0) {
str = myComponent.getText().substring(0, 1);
if (s.equals("-")) {
if (offset == 0 && !(str.equals("-"))) {
Result = s + Value;
} else {
Toolkit.getDefaultToolkit().beep(); // Transfer the System's
// ring
return;
}
} else {
Result = Value.substring(0, offset) + s
+ Value.substring(offset);
}
} else {
if (s.equals("-")) {
// super.insertString(offset, s, attributeSet);
Toolkit.getDefaultToolkit().beep(); // Transfer the System's
// ring
return;
} else {
Result = s;
}
} try {
long value = Long.parseLong(Result);
if (value > 356 || value <= 0) {
Toolkit.getDefaultToolkit().beep(); // Transfer the System's
// ring
return;
}
} catch (Exception ex) {
Toolkit.getDefaultToolkit().beep(); // Transfer the System's ring
return;
}
super.replace(offset, length, s, attributeSet);
}}