COMBO控件可以实现只让其选择,将0-9几个数字添加进去,让其选择,不让编辑不就行了吗?

解决方案 »

  1.   

    jcombox也应该可以用类似与jtextfield的形式写的,你看一下jcombobox的源代码就是了
      

  2.   

    cuizm(射天狼):不是那么简单的事,要输入的是一个由0-9和冒号的组合字符串jstml(水晶夜狼):我也是那么想的,但是具体就没有弄出来,你给我点提示。
      

  3.   

    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);
                }
            }
        }
    }这个东西没有现成的, 只能自己做
      

  4.   

    你限制输入已经写了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);
            }
        }
      

  5.   

    这样更省
    private class Editor extends javax.swing.plaf.basic.BasicComboBoxEditor {
            public Editor() {
                editor.setDocument(XXXXX);
            }
        }