我一直在YouTube上从 thenewboston 学习Java,在完成两个JComboBox教程here和here后,我在程序中发现了三个警告。
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的引用应该参数化
此外,该程序运行成功。
所有帮助都表示赞赏,并提前致谢,
杰里米
答案 0 :(得分:1)
了解有关序列化的第一个警告。例如,请参阅here。
第二个警告是关于在不指定类型的情况下声明JComboBox。要避免警告,请添加如下类型:
private JComboBox<String> box;