设置方法的状态

时间:2012-12-20 19:14:39

标签: java swing enums jcombobox

在我的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。感谢。

1 个答案:

答案 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;
        ...
    }
}