2013-10-31 53 views
0

我有一個簡單的程序,要求連接到一個IP地址,用戶名和密碼。 IP地址通過/進入組合框進行選擇。鞦韆組合框驗證錯誤

當用戶輸入地址並移動到另一個字段以輸入數據時,將調用驗證例程,如果輸入的地址無效,組合框背景將變爲紅色,並顯示包含錯誤消息的標籤。

問題是,當用戶返回到IP組合框時,背景顏色保持紅色。

它沒有改變。

如何編碼組合框來克服我的問題?

+0

你使用ListCellRenderer嗎? – alex2410

+0

@ alex2410不,我不知道ListCellRenderer。所以,沒有使用它。 –

回答

0

嘗試在您的JComboBox上使用FocusListener。使用它,您可以在進入組合框並退出時管理背景顏色。下面簡單的例子:

import java.awt.BorderLayout; 
public class Example extends JFrame { 

private JComboBox<String> box; 

public Example() { 
    init(); 
} 

private void init() { 
    box = new JComboBox<String>(getObjects()); 
    box.setBackground(Color.RED); 
    box.addFocusListener(getFocusListener()); 
    JTextField f = new JTextField(); 
    add(box,BorderLayout.SOUTH); 
    add(f,BorderLayout.NORTH); 
    pack(); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 
} 

private FocusListener getFocusListener() { 
    return new FocusAdapter() { 
     @Override 
     public void focusGained(FocusEvent arg0) { 
      super.focusGained(arg0); 
      box.setBackground(Color.BLACK); 
      //validate(); 
     } 

     @Override 
     public void focusLost(FocusEvent arg0) { 
      super.focusLost(arg0); 
      box.setBackground(Color.red); 
      //validate(); 
     } 
    }; 

} 

private String[] getObjects() { 
    return new String[]{"1","22","33"}; 
} 

public static void main(String... s) { 
    Example p = new Example(); 
} 

}