0

接続するIPアドレス、ユーザーID、パスワードを要求する簡単なプログラムがあります。IP アドレスは、コンボボックスで選択または入力します。

ユーザーが住所を入力し、データを入力するために別のフィールドに移動すると、検証ルーチンが呼び出され、無効な住所が入力された場合は、コンボボックスの背景が赤に変わり、エラー メッセージを含むラベルが表示されます。

問題は、ユーザーが ip コンボ ボックスに戻ったときに、背景色が赤のままになることです。

それは変わりません。

問題を克服するためにコンボボックスをコーディングするにはどうすればよいですか?

4

1 に答える 1

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

}
于 2013-10-31T06:50:45.830 に答える