2013-01-19 27 views
2

基本上我是一个相当开始的Java学生,我必须创建一个包含JComboBox的简单GUI。窗口应该是这样的:http://i.imgur.com/Jg7j4XD.jpgJava编译器JComboBox的“未检查或不安全操作”警告

当我编译的代码(如下图所示),它编译,但我得到以下警告在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(); 
    } 
} 
+0

不要忘记[接受解答](http://meta.stackexchange.com/a/65088/155831),您会发现很有帮助。您可以重新访问以前的问题以接受。 – Reimeus

回答

8

由于Java 7,JComboBox要求泛型来描述所保存的数据:

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

不指定这些会产生所示的编译器警告。

+0

工作,谢谢! – djmordigal

2

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

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

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

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

+0

我在Java的最新版本中,实际上我发现窗口中没有显示任何内容,setVisible(true)部分必须位于构造函数的最后。 此外,你是对的,我只需要指定泛型与JComboBox的创建。感谢您的输入。 – djmordigal

相关问题