2012-01-13 9 views
5

OK Używam Eclipse i jego edytora GUI i mam ciąg jak poniżej:JComboBox Ostrzeżenie zapobiegając otwarciu strony projektu w Eclipse

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

i JComboBox takiego:

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

combobox używa powyższego ciągu, aby uzyskać jego dane, ale kiedy wpisuję w "bla" do combobox ma ten błąd ...

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

działa, jeśli uruchomię go, ponieważ jest to tylko ostrzeżenie, ale jest denerwujące, ponieważ nie pozwala mi wejść w tryb projektowania, chyba że zrobię to komentarz. Tryb konstrukcja daje ten błąd ...

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

więc chciałbym wiedzieć, czy jest jakiś inny sposób rozwiązania tego problemu

+3

Można użyć adnotacji aby obejść ten problem. Przy okazji, nie używaj setBounds (...). Użyj menedżerów układu. Czy na pewno chcesz użyć edytora GUI? –

+0

Muszę użyć absolutnego układu dla tego konkretnego programu i tak, edytor GUI jest konieczny dla tego konkretnego projektu, co masz na myśli przez adnotacje? –

+1

* "Muszę użyć absolutnego układu dla tego konkretnego programu" * ** Dlaczego? * * * "i tak edytor GUI jest konieczny dla tego konkretnego projektu," * ** Dlaczego? ** IMWTK. –

Odpowiedz

6

problem szwy się, że WindowBuilder nie może obsługiwać wersję generyków JComboBox<E> whitch jest nowy w jre7.

miałem ten sam problem i naprawić go, dodając jre6 pod Preferencje -> Java -> Zainstalowane JRE oraz zapewnienie, że projekt wykorzystuje środowisko wykonawcze „JavaSE-1,6” pod Projektu -> właściwości -> Kompilator Javy.

Więc jeśli nie potrzebujesz java 7, możesz to łatwo naprawić, inaczej musisz poczekać, aż Windowbuilder obsłuży wersję generyczną.

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

to obejście po użyciu wyliczenia w JComboBox (z WindowBuilder Eclipse 3.7.2 Java 6). Tak, wydaje się być związane z generic Java dla obiektów, które są nieco nietypowe (enum, String, itp.). TraceMode to niestandardowe wyliczenie. Zakreślona linia powoduje ten sam błąd, co oryginalny plakat. Jest to problem WindowBuilder, a nie problem Eclipse lub Java.

+1

Chciałbym móc dwukrotnie głosować ... – Matthieu

2

myślę OP już dostał użytecznej odpowiedzi od 3 lat minęły: D jednak nadzieję, że znajdziesz to przydatne:

Właściwie nie wiem, dlaczego ten błąd ale u można łatwo pozbyć oddzielając tworzenie ComboBoxModel od kreacji JComboBox.

Zdefiniowanie najpierw modelu (np. Za pomocą DefaultComboBoxModel), dodanie potrzebnych elementów, a następnie przekazanie powyższego modelu do konstruktora JComboBox, nie powoduje tego błędu i działa poprawnie.

E.g.

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

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

JComboBox comboBox = new JComboBox(comboModel);` 

Dość zwięzły i czytelny, myślę :)

+0

Dzięki, rozwiążę mój problem. Miałem problem z JComboBox , więc nie dotyczyło to ani generycznych ani starych java. – c0der

+0

To jest dokładnie taka sama odpowiedź, jak @ user2060864 powyżej ... – Matthieu

Powiązane problemy