كيف يمكنني الحصول على InputVerifier للعمل مع للتحرير JComboBox

StackOverflow https://stackoverflow.com/questions/54567

  •  09-06-2019
  •  | 
  •  

سؤال

لدي JComboBox مع العرف inputVerifyer تعيين الحد MaxLength أنه للتحرير.

التحقق من طريقة لا يبدو للحصول على ما يسمى.
نفس verifyer يحصل الاحتجاج على JTextField بخير

ما قد يكون به خطأ ؟

هل كانت مفيدة؟

المحلول

لقد وجدت الحل.فكرت السماح للشخص القادم مع هذه المشكلة تعرف عن.

في الأساس.بدلا من وضع inputVerifier على تحرير وسرد قمت بتعيين أنه إلى أنه "مكون التحرير".

JComboBox combo = new JComboBox();
JTextField tf = (JTextField)(combo.getEditor().getEditorComponent());
tf.setInputVerifier(verifyer);

نصائح أخرى

تظهر لنا جزء صغير من التعليمات البرمجية الخاصة بك.

package inputverifier;

import javax.swing.*;

    class Go {
    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
            runEDT();
        }});
    }
    private static void runEDT() {
        new JFrame("combo thing") {{
            setLayout(new java.awt.GridLayout(2, 1));
            add(new JComboBox() {{
                setEditable(true);
                setInputVerifier(new InputVerifier() {
                    @Override public boolean verify(JComponent input) {
                        System.err.println("Hi!");
                        return true;
                    }
                });
            }});
            add(new JTextField());
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            pack();
            setVisible(true);
        }};
    }    
}

يبدو انها مشكلة مع JComboBox كونه عنصر مركب. أود أن اقترح تجنب مثل هذه سيئة واجهة المستخدم الحلول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top