如何限制jComboBox中只能输入0-9的数字和冒号?没有头绪,高手请指点! COMBO控件可以实现只让其选择,将0-9几个数字添加进去,让其选择,不让编辑不就行了吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 jcombox也应该可以用类似与jtextfield的形式写的,你看一下jcombobox的源代码就是了 cuizm(射天狼):不是那么简单的事,要输入的是一个由0-9和冒号的组合字符串jstml(水晶夜狼):我也是那么想的,但是具体就没有弄出来,你给我点提示。 import javax.swing.*;import javax.swing.text.AbstractDocument;import javax.swing.text.AttributeSet;import javax.swing.text.BadLocationException;import javax.swing.text.DocumentFilter;import java.awt.*;import java.util.regex.Matcher;import java.util.regex.Pattern;public class ComboBoxFilter extends JFrame { JComboBox jcb = new JComboBox(); public ComboBoxFilter() { JTextField jtf; AbstractDocument aDoc; jcb.setPreferredSize(new Dimension(400, 20)); jcb.setEditable(true); jtf = (JTextField) jcb.getEditor().getEditorComponent(); aDoc = (AbstractDocument) jtf.getDocument(); aDoc.setDocumentFilter(new DigitFilter()); getContentPane().add(jcb); } public static void main(String[] args) { ComboBoxFilter frame = new ComboBoxFilter(); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } private class DigitFilter extends DocumentFilter { Pattern p = Pattern.compile("[0-9:]+"); Matcher m = p.matcher(""); public void insertString(FilterBypass fb, int offset, String text, AttributeSet attrs) throws BadLocationException { m.reset(text); if (m.matches()) { super.insertString(fb, offset, text, attrs); } } public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException { m.reset(text); if (m.matches()) { super.insertString(fb, offset, text, attrs); } } }}这个东西没有现成的, 只能自己做 你限制输入已经写了document里面你将下面的XXXXX换成你的jComboBox1.setEditor(new Editor());private class Editor extends javax.swing.plaf.basic.BasicComboBoxEditor { public Editor() { editor = new javax.swing.JFormattedTextField(new java.text.DecimalFormat("##0")); editor.setDocument(XXXXX); editor.setBorder(null); } } 这样更省private class Editor extends javax.swing.plaf.basic.BasicComboBoxEditor { public Editor() { editor.setDocument(XXXXX); } } 正则表达式 Java JTable 表头设置问题 (新手求助)程序,线程,进程,多线程,谁帮我解释一下 有偿转让Java即时通信工具源程序及设计文档 无发正常运行! 关于类中静态方法使用的疑问 我这样学java是不是有点急了 谁能给我JBUILDER8的序列号啊,谢谢!!!!!!!!!! jb5的jdk似乎运行rmi有点问题,同时那位的jb5的注册吗有效? jar 文件什么用 java VM 运行? String.split()方法又一问 ---- java中正则表达式的问题------
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
import java.awt.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class ComboBoxFilter extends JFrame {
JComboBox jcb = new JComboBox(); public ComboBoxFilter() {
JTextField jtf;
AbstractDocument aDoc; jcb.setPreferredSize(new Dimension(400, 20));
jcb.setEditable(true);
jtf = (JTextField) jcb.getEditor().getEditorComponent();
aDoc = (AbstractDocument) jtf.getDocument();
aDoc.setDocumentFilter(new DigitFilter()); getContentPane().add(jcb);
} public static void main(String[] args) {
ComboBoxFilter frame = new ComboBoxFilter(); frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
} private class DigitFilter extends DocumentFilter {
Pattern p = Pattern.compile("[0-9:]+");
Matcher m = p.matcher(""); public void insertString(FilterBypass fb, int offset, String text,
AttributeSet attrs) throws BadLocationException {
m.reset(text);
if (m.matches()) {
super.insertString(fb, offset, text, attrs);
}
} public void replace(FilterBypass fb, int offset, int length, String text,
AttributeSet attrs) throws BadLocationException {
m.reset(text);
if (m.matches()) {
super.insertString(fb, offset, text, attrs);
}
}
}
}这个东西没有现成的, 只能自己做
jComboBox1.setEditor(new Editor());private class Editor extends javax.swing.plaf.basic.BasicComboBoxEditor {
public Editor() {
editor = new javax.swing.JFormattedTextField(new java.text.DecimalFormat("##0"));
editor.setDocument(XXXXX);
editor.setBorder(null);
}
}
private class Editor extends javax.swing.plaf.basic.BasicComboBoxEditor {
public Editor() {
editor.setDocument(XXXXX);
}
}