使用JComboBox的Java程序中的警告

时间:2015-08-04 09:40:22

标签: java jcombobox

我一直在YouTube上从 thenewboston 学习Java,在完成两个JComboBox教程herehere后,我在程序中发现了三个警告。

FirstClass.java

import javax.swing.JFrame;

public class FirstClass {

    public static void main(String args[]) {

        Scrabble go = new Scrabble();
        go.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        go.setSize(300,200);
        go.setVisible(true);

    }

}

Scrabble.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Scrabble extends JFrame {

    private JComboBox box;
    private JLabel picture;

    private static String[] filename = {"Coraline_Small.jpg", "fish.jpg"};
    private Icon[] pics = {new ImageIcon(getClass().getResource(filename[0])), new ImageIcon(getClass().getResource(filename[1]))};

    public Scrabble() {

        super("JComboBox");
        setLayout(new FlowLayout());

        box = new JComboBox(filename);

        box.addItemListener(

            new ItemListener() {

                public void itemStateChanged(ItemEvent event) {

                    if(event.getStateChange() == ItemEvent.SELECTED);
                        picture.setIcon(pics[box.getSelectedIndex()]);

                };
            }

        );

        add(box);
        picture = new JLabel(pics[0]);
        add(picture);               

    }   
}

第一个警告出现在Scrabble.java的第5行,

public class Scrabble extends JFrame {

话说:

  

可序列化类Scrabble没有声明静态final   long类型的serialVersionUID字段

第二个警告出现在Scrabble.java的第7行,

private JComboBox box;

话说:

  

JComboBox是原始类型。引用泛型类型JComboBox   应该是> >参数

第三个也是最后一个警告出现在Scrabble.java的第18行,

box = new JComboBox(filename);

话说:

  

此行有多个标记      - 类型安全:构造函数JComboBox(Object [])属于原始类型JComboBox。对泛型类型JComboBox的引用应该是
  参数      - JComboBox是原始类型。对泛型类型JComboBox的引用应该参数化

此外,该程序运行成功。

所有帮助都表示赞赏,并提前致谢,

杰里米

1 个答案:

答案 0 :(得分:1)

了解有关序列化的第一个警告。例如,请参阅here

第二个警告是关于在不指定类型的情况下声明JComboBox。要避免警告,请添加如下类型:

private JComboBox<String> box;