2012-01-13 7 views
5

OK sto usando Eclipse e il suo editore GUI e ho una stringa come questa:JComboBox Attenzione impedendo l'apertura della pagina di progettazione in Eclipse

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

e JComboBox come questo:

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

Il combobox utilizza la stringa sopra per ottenere i suoi dati ma quando inserisco "blah" nella casella combinata ha questo errore ...

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

funziona se lo eseguo perché è solo un avvertimento ma è fastidioso perché non mi consente di entrare in modalità progettazione a meno che non ne faccia un commento. modalità di progettazione dà questo errore ...

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

quindi vorrei sapere se c'è qualche altro modo per superare questo problema

+3

È possibile utilizzare le annotazioni per aggirare questo. A proposito, non usare setBounds (...). Utilizzare i gestori di layout. Inoltre, sei sicuro di voler utilizzare un editor GUI? –

+0

Devo usare il layout assoluto per questo particolare programma e sì un editor GUI è un must per questo particolare progetto, cosa intendi per annotazioni –

+1

* "Devo usare il layout assoluto per questo particolare programma" * ** Perché? * * * "e sì un editor GUI è un must per questo particolare progetto," * ** Perché? ** IMWTK. –

risposta

6

Le cuciture problema da che WindowBuilder non può gestire la versione di farmaci generici JComboBox<E> che è nuovo in jre7.

Ho avuto lo stesso problema e ha risolto il tutto aggiungendo le jre6 sotto Preferenze -> Java -> JRE installati e garantire che il progetto utilizza l'ambiente di esecuzione 'JavaSE-1.6' sotto Progetto -> proprietà -> Compilatore Java.

Quindi, se non è necessario java 7, è possibile risolverlo facilmente, altrimenti è necessario attendere che Windowbuilder supporti la versione generica.

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

Questa è una soluzione nell'impiego di enumerazione in un JComboBox (con WindowBuilder su Eclipse 3.7.2 per Java 6). Sì, sembra essere correlato ai generici di Java per oggetti che sono un po 'fuori dall'ordinario (enum, String, ecc.). TraceMode è un enum personalizzato. La riga commentata causa lo stesso errore di quello del poster originale. Questo è un problema di WindowBuilder, non un problema di Eclipse o Java.

+1

Vorrei poter invocare due volte ... – Matthieu

2

Penso OP già ottenuto una risposta utile da 3 anni se ne sono andati: D comunque, spero troverete questo utile:

In realtà io non so perché otteniamo questo errore ma u può facilmente sbarazzarsi di esso separando la creazione di ComboBoxModel e la creazione di JComboBox.

Definendo prima il modello (ad esempio utilizzando DefaultComboBoxModel), aggiungendo gli elementi necessari e passando il modello precedente al costruttore JComboBox, non si verifica questo errore e funziona correttamente.

E.g.

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

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

JComboBox comboBox = new JComboBox(comboModel);` 

Molto conciso e leggibile, credo :)

+0

Grazie, risolve il mio problema. Ho avuto il problema con JComboBox quindi non correlato a generici, né a vecchi java. – c0der

+0

Questa è la stessa risposta di @ user2060864 sopra ... – Matthieu

Problemi correlati