import javax.swing.text.*;
import javax.swing.*;
import java.awt.*;
import java.text.*;public class DigitalTextField extends JTextField
{
private Toolkit toolkit;
public DigitalTextField()
{
toolkit = Toolkit.getDefaultToolkit();
} protected Document createDefaultModel() {
return new DigitalDocument();
} protected class DigitalDocument extends PlainDocument { public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException { char[] source = str.toCharArray();
char[] result = new char[source.length];
int j = 0; for (int i = 0; i < result.length; i++)
{
if (Character.isDigit(source[i]))
result[j++] = source[i];
else
toolkit.beep();
}
super.insertString(offs, new String(result, 0, j), a);
}
}}象JTextField一样使用就可以了!
TBW:你的帐号怎么和我的名字完全相同,你也叫那个名字?
这么有缘,交个朋友吧^_*
import javax.swing.*;
import java.awt.*;
import java.text.*;public class DigitalTextField extends JTextField
{
private Toolkit toolkit;
public DigitalTextField()
{
toolkit = Toolkit.getDefaultToolkit();
} protected Document createDefaultModel() {
return new DigitalDocument();
} protected class DigitalDocument extends PlainDocument { public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException { char[] source = str.toCharArray();
char[] result = new char[source.length];
int j = 0; for (int i = 0; i < result.length; i++)
{
if (Character.isDigit(source[i]))
result[j++] = source[i];
else
toolkit.beep();
}
super.insertString(offs, new String(result, 0, j), a);
}
}}象JTextField一样使用就可以了!
TBW:你的帐号怎么和我的名字完全相同,你也叫那个名字?
这么有缘,交个朋友吧^_*
if(Character.isLetter(e.getKeyChar()))//判断输入的是字母
调用textfiled.setDocument(new NumberDocument());
其中NumberDocument是继承PlainDocument的子类。
覆盖其insertString和remove两个方法。
详情文档请参考:
http://java.sun.com/docs/books/tutorial/uiswing/components/textfield.html#validation
设置只能输入数字
import javax.swing.text.*;
import java.awt.*;
public class NumberDocument extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
char[] source = str.toCharArray();
char[] result = new char[source.length];
int j = 0;
for (int i = 0; i < result.length; i++) {
if (Character.isDigit(source[i]))
result[j++] = source[i];
else {
Toolkit.getDefaultToolkit().beep();
System.err.println("insertString: " + source[i]);
}
}
super.insertString(offs, new String(result, 0, j), a);
}
}
iYear=(new Integer(t_Year.getText().toString()).intValue());
就是将文本框的字符串变成整数,这个t_Year使用了那个Document.出现下面的异常:
Exception occurred during event dispatching:java.lang.NumberFormatException: at java.lang.Integer.parseInt(Integer.java:435) at java.lang.Integer.<init>(Integer.java:549) at test1.DatePanel.day_GetLimit(DatePanel.java:436) at test1.DatePanel.day_MaxSet(DatePanel.java:455) at test1.DatePanel.sbar_Year_adjustmentValueChanged(DatePanel.java:358) at test1.DatePanel$10.adjustmentValueChanged(DatePanel.java:128) at javax.swing.JScrollBar.fireAdjustmentValueChanged(JScrollBar.java:623) at javax.swing.JScrollBar$ModelListener.stateChanged(JScrollBar.java:640) at javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:329) at javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:285) at javax.swing.DefaultBoundedRangeModel.setValue(DefaultBoundedRangeModel.java:150) at javax.swing.JScrollBar.setValue(JScrollBar.java:419) at test1.DatePanel.year_Check(DatePanel.java:314) at test1.DatePanel.t_Year_keyReleased(DatePanel.java:338) at test1.DatePanel$2.keyReleased(DatePanel.java:62) at java.awt.Component.processKeyEvent(Component.java:3680) at javax.swing.JComponent.processKeyEvent(JComponent.java:2014) at java.awt.Component.processEvent(Component.java:3553) at java.awt.Container.processEvent(Container.java:1164) at java.awt.Component.dispatchEventImpl(Component.java:2593) at java.awt.Container.dispatchEventImpl(Container.java:1213) at java.awt.Component.dispatchEvent(Component.java:2497) at java.awt.LightweightDispatcher.processKeyEvent(Container.java:2155) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2135) at java.awt.Container.dispatchEventImpl(Container.java:1200) at java.awt.Component.dispatchEvent(Component.java:2497) at java.awt.EventQueue.dispatchEvent(EventQueue.java:339) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)