Luc*_*F98 6 java eclipse jcombobox
好的我正在使用eclipse及其GUI编辑器,我有一个这样的字符串:
public static String[] blah = {"Blah", "Blah", "Blah", "Blah"};
Run Code Online (Sandbox Code Playgroud)
和这样的JComboBox:
JComboBox comboBox = new JComboBox(blah);
comboBox.setBounds(10, 56, 312, 37);
contentPane.add(comboBox);
Run Code Online (Sandbox Code Playgroud)
组合框使用上面的字符串来获取其数据,但当我输入"blah"到组合框时,它有这个错误...
Type safety: The constructor JComboBox(Object[]) belongs to the raw type JComboBox. References to generic type JComboBox<E> should be parameterized
Run Code Online (Sandbox Code Playgroud)
如果我运行它是有效的,因为它只是一个警告,但它很烦人,因为它不会让我进入设计模式,除非我作出评论.设计模式给出了这个错误......
INVALID SOURCE. No Constructor Binding. --- new JComboBox(locations) is not valid source for component creation, it references not existing constructor.
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否还有其他办法可以解决这个问题
小智 10
// comboBoxTraceModeSelection = new JComboBox<TraceMode>(TraceMode.values());
comboBoxTraceModeSelection = new JComboBox<TraceMode>();
comboBoxTraceModeSelection.setModel(new DefaultComboBoxModel<TraceMode>
(TraceMode.values()));
Run Code Online (Sandbox Code Playgroud)
这是在JComboBox中使用枚举时的解决方法(在Eclipse 3.7.2上使用WindowBuilder for java 6).是的,对于有点不同寻常的对象(枚举,字符串等),它似乎与Java泛型有关.TraceMode是一个自定义枚举.注释掉的行会导致与原始海报相同的错误.这是一个WindowBuilder问题,而不是Eclipse或Java问题.
小智 7
我认为 OP 已经得到了一个有用的答案,因为 3 年过去了:D 但是,希望你会发现这个有用:
实际上我不知道为什么会出现此错误,但您可以通过分离 ComboBoxModel 创建和 JComboBox 创建来轻松摆脱它。
首先定义模型(例如使用 DefaultComboBoxModel),添加所需的元素,然后将上述模型传递给 JComboBox 构造函数,不会导致此错误并且工作正常。
例如
public static String[] blah = {"Blah", "Blah", "Blah", "Blah"};
DefaultComboBoxModel<String> comboModel = new DefaultComboBoxModel<String>(blah);
JComboBox comboBox = new JComboBox(comboModel);`
Run Code Online (Sandbox Code Playgroud)
我认为非常简洁易读:)
小智 6
问题是,WindowBuilder无法处理whitch的泛型版本JComboBox<E>是jre7中的新功能.
我遇到了同样的问题并通过在Preferences - > Java - > Installed JREs下添加jre6并确保项目在Project - > properties - > Java Compiler下使用执行环境'JavaSE-1.6'来修复它.
因此,如果您不需要java 7,您可以轻松修复它,否则您必须等待Windowbuilder支持泛型版本.