0
我有一個簡單的程序,要求連接到一個IP地址,用戶名和密碼。 IP地址通過/進入組合框進行選擇。鞦韆組合框驗證錯誤
當用戶輸入地址並移動到另一個字段以輸入數據時,將調用驗證例程,如果輸入的地址無效,組合框背景將變爲紅色,並顯示包含錯誤消息的標籤。
問題是,當用戶返回到IP組合框時,背景顏色保持紅色。
它沒有改變。
如何編碼組合框來克服我的問題?
我有一個簡單的程序,要求連接到一個IP地址,用戶名和密碼。 IP地址通過/進入組合框進行選擇。鞦韆組合框驗證錯誤
當用戶輸入地址並移動到另一個字段以輸入數據時,將調用驗證例程,如果輸入的地址無效,組合框背景將變爲紅色,並顯示包含錯誤消息的標籤。
問題是,當用戶返回到IP組合框時,背景顏色保持紅色。
它沒有改變。
如何編碼組合框來克服我的問題?
嘗試在您的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();
}
}
你使用ListCellRenderer嗎? – alex2410
@ alex2410不,我不知道ListCellRenderer。所以,沒有使用它。 –