Java编译器使用JComboBox发出“未经检查或不安全的操作”警告

时间:2013-01-19 20:44:22

标签: java user-interface

基本上我是一个相当开始的Java学生,我必须创建一个包含JComboBox的简单GUI。该窗口应该如下所示:http://i.imgur.com/Jg7j4XD.jpg

当我编译代码(如下所示)时,它会编译,但我在jGRASP中收到以下警告:

Note: Lab6.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

这是我的代码。我知道这意味着我必须指定涉及数据类型的东西(对吗?)但我认为我已经指定了足够的内容。感谢任何可以提供帮助的人。

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

public class Lab6 extends JFrame
{
    private String[] choices = {"Hello", "Good-Bye"};

    public Lab6()
    {
        super("218 Lab 6");
        setSize(450,200);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLayout(new BorderLayout());

        JPanel panelNorth = new JPanel();
            panelNorth.add(new JLabel("Welcome Class 218!"));

            JComboBox comboBox = new JComboBox(choices);
            panelNorth.add(comboBox);

            add(panelNorth,BorderLayout.NORTH);
    }

    public static void main(String[] args)
    {
        new Lab6();
    }
}

2 个答案:

答案 0 :(得分:8)

自Java 7起,JComboBox需要泛型来描述它所拥有的数据:

JComboBox<String> comboBox = new JComboBox<>(choices);

不指定这些将产生显示的编译器警告。

答案 1 :(得分:2)

我复制了你的代码并将其直接粘贴到一个文本文件中,然后用标准的javac编译器编译它,我没有得到警告。但是当我跑步时,窗户上也没有出现任何东西。

您使用的是哪个版本的Java?如果它的Java 7尝试在组合框中使用泛型。就像使用ArrayList一样,

 JComboBox<String> comboBox = new JComboBox<>(choices);

我相信这是Java 7的正确方法,如果不是,我很肯定有人会纠正我。并且只是为了记录警告并不意味着你的程序不会运行,它的编译器警告不是错误,你仍然应该能够运行该程序。