Как проверить, какой тип JComboBox перед тем, как его привести? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь создать метод для очистки всех полей в моем JFrame.Но я получаю предупреждения от Eclipse.

private void clearAll(Container container) {

        for (Component component : container.getComponents()) {
            if (component instanceof JTextField) {
                JTextField field = (JTextField) component;

                field.setText("");
            }

            if (component instanceof JComboBox) {
                JComboBox<String> box = (JComboBox<String>) component;
                box.setSelectedIndex(-1);
            }

            if (component instanceof Checkbox) {
                Checkbox box = (Checkbox) component;

                box.setState(false);
            }

            if (component instanceof Container) {
                clearTextFields((Container) component);
            }
        }
    }

Но я получаю это предупреждающее сообщение:

Безопасность типов: непроверенное приведение от Компонента к JComboBox

Теперь все мои комбинированные списки являются строками, поэтому я не думаю, что это когда-либо вызовет ошибку (я, вероятно, ошибаюсь), но я все еще хочу научиться правильному способу сделать это.

Если я изменючасть кода Combobox для:

    if (component instanceof JComboBox) {
                JComboBox box = (JComboBox) component;
                box.setSelectedIndex(-1);
            }

Я получаю другое предупреждение:

JComboBox является необработанным типом.Ссылки на универсальный тип JComboBox должны быть параметризованы

Я новичок в свинге, поэтому не знаю всех методов / возможностей.Если мой метод сброса всего можно сделать проще / лучше, пожалуйста, сообщите мне.У меня есть оригинальный метод очистки всех полей из другого поста на сайте.

1 Ответ

0 голосов
/ 25 января 2019

Как насчет:

   if (component instanceof JComboBox) {
        JComboBox<?> box = (JComboBox<?>) component;
        box.setSelectedIndex(-1);
   }
...