2013-01-19 57 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

相關問題