【问题标题】:Swing combo box validation errorSwing 组合框验证错误
【发布时间】:2013-10-31 06:31:59
【问题描述】:

我有一个简单的程序,它要求提供要连接的 IP 地址、用户 ID 和密码。 IP 地址是通过/输入组合框来选择的。

当用户输入地址并移至另一个字段以输入数据时,将调用验证例程,如果输入的地址无效,组合框背景将变为红色,并显示包含错误消息的标签。

问题是当用户返回到ip组合框时,背景颜色仍然是红色。

它不会改变。

如何编写组合框代码来解决我的问题?

【问题讨论】:

  • 你使用 ListCellRenderer 吗?
  • @alex2410 不,我不知道 ListCellRenderer。所以,没用过。

标签: java swing concurrency jcombobox event-dispatch-thread


【解决方案1】:

尝试在您的 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();
}

}

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多