2012-01-13 103 views
5

OK我使用Eclipse和它的圖形用戶界面編輯器,我有一個這樣的字符串:的JComboBox警告防止打開設計頁面

public static String[] blah = {"Blah", "Blah", "Blah", "Blah"}; 

和一個JComboBox,像這樣:

JComboBox comboBox = new JComboBox(blah); 
    comboBox.setBounds(10, 56, 312, 37); 
    contentPane.add(comboBox); 

的組合框使用上面的字符串來獲取其數據,但是當我在「嗒嗒」的組合框中輸入它有這個錯誤...

Type safety: The constructor JComboBox(Object[]) belongs to the raw type JComboBox. References to generic type JComboBox<E> should be parameterized 

它運作,如果我運行它,因爲它只是一個警告,但它很討厭,因爲它不會讓我進入設計模式,除非我做它的評論。設計模式使這個錯誤...

INVALID SOURCE. No Constructor Binding. --- new JComboBox(locations) is not valid source for component creation, it references not existing constructor. 

,所以我想知道是否有任何其他的方式來解決這個問題

+3

您可以使用標註來解決這個問題。順便說一句,不要使用setBounds(...)。使用佈局管理器。另外,您確定要使用GUI編輯器嗎? – 2012-01-13 02:25:52

+0

我必須爲這個特定的程序使用絕對佈局,是的GUI編輯器是這個特定的項目必須的,你是什麼意思註釋 – 2012-01-13 02:29:42

+1

*「我必須使用絕對佈局這個特定的程序」* **爲什麼?* * *「,是的,一個GUI編輯器是這個特定項目的必備條件,」* **爲什麼?** IMWTK。 – 2012-01-13 02:35:58

回答

6

問題接縫是的WindowBuilder不能處理的仿製藥版本JComboBox<E>在jre7中是新的。

我有同樣的問題,並通過添加JRE6偏好固定它 - >爪哇 - >安裝的JRE,並確保該項目使用的執行環境,「的JavaSE-1.6」項目 - >屬性 - > Java編譯器

所以,如果你不需要Java 7,你可以輕鬆地修復它,否則你必須等待Windowbuilder支持泛型版本。

8
// comboBoxTraceModeSelection = new JComboBox<TraceMode>(TraceMode.values()); 
    comboBoxTraceModeSelection = new JComboBox<TraceMode>(); 
    comboBoxTraceModeSelection.setModel(new DefaultComboBoxModel<TraceMode> 
(TraceMode.values())); 

這是在JComboBox中使用枚舉時的解決方法(對於Eclipse 6,在Eclipse 3.7.2上使用WindowBuilder)。是的,它似乎與Java泛型有關的對象有點不同尋常(枚舉,字符串等)。 TraceMode是一個自定義枚舉。註釋行會導致與原始海報相同的錯誤。這是一個WindowBuilder問題,而不是Eclipse或Java問題。

+1

我希望我可以upvote兩次... – Matthieu 2016-04-13 10:39:03

2

我覺得OP已經得到了一個有用的答案3年以來都沒有了:d但是,希望你會發現這個有用:

其實我不知道爲什麼我們得到這個錯誤,但你可以很容易地擺脫通過分離ComboBoxModel創建和JComboBox創建。

首先定義模型(例如使用DefaultComboBoxModel),添加所需的元素,然後將上述模型傳遞給JComboBox構造函數,但不會導致此錯誤,並且工作正常。

E.g.

public static String[] blah = {"Blah", "Blah", "Blah", "Blah"}; 

DefaultComboBoxModel<String> comboModel = new DefaultComboBoxModel<String>(blah); 

JComboBox comboBox = new JComboBox(comboModel);` 

相當簡潔易讀,我認爲:)

+0

謝謝,它解決了我的問題。我遇到了JComboBox 的問題,所以它與泛型沒有關係,也沒有涉及到java。 – c0der 2016-02-18 08:42:46

+0

這與上面的@ user2060864完全相同 – Matthieu 2016-04-13 10:39:52