2008-09-10 20 views
3

ile çalışmak için InputVerifier'i nasıl alabilirim? Düzenlenebilir olarak ayarlandığında MaxLength'u sınırlamak üzere özel inputVerifyer ayarlanmış bir JComboBox var.Düzenlenebilir bir JComboBox

Doğrulama yöntemi asla aranmıyor gibi görünüyor.
Aynı doğrulayıcı, JTextField numaralı telefondan yararlanır.

Yanlış ne yapabilirim?

cevap

8

Bir geçici çözüm buldum. Bu problemle bir sonraki kişinin bilmesini sağlayabileceğimi düşündüm.

Temel olarak. InputVerifier'i ComboBox'ta ayarlamak yerine, bunu "Editor Component" e ayarlıyorsunuz.

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

Bize kodunuzun küçük bir bölümünü gösterin.

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); 
     }}; 
    }  
} 

Looks like it's a problem with JComboBox being a composite component. Böyle pis UI çözümlerini kaçınarak öneririm.