在我的GUI中我有
@Override
public void actionPerformed(ActionEvent ae) {
state = new JComboBox(EnumStates.values());
state =(JComboBox)ae.getSource()
state.getSelectedItem() //this returns what I want
然后我有一些其他类的对象使用EnumStates
CallmeClass obj;
当我尝试用这样的JComboBox结果设置枚举的状态时
obj.setState(state.getSelectedItem());
我收到编译错误
1。必需的状态但找到了对象
所以我的问题是is there a way to make the setState take as argument state.getSelectedItem() withouth changing the return type of the method setState() or re declaring the enums in the gui
。感谢。
答案 0 :(得分:2)
我猜你的setState
声明是这样的:
public void setState(State state){
...
}
问题是JComboBox是无类型的(至少在Java7之前就是这样)。所以getSelectedItem()
总是返回一个需要转换为你的类型的对象。因此,当您获得该项目时,您可以进行演员表:
obj.setState((State)state.getSelectedItem());
或者您可以将方法声明更改为object并在那里进行演员:
public void setState(Object state){
if(state instanceof State){
State realState = (State)state;
...
}
}