0

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

4

1 回答 1

2

我猜你的声明setState是这样的:

public void setState(State state){
    ...
}

问题是 JComboBox 是无类型的(至少在 Java7 之前是这样的)。所以getSelectedItem()总是返回一个需要转换为你的类型的对象。因此,您可以在获得项目时进行演员表:

obj.setState((State)state.getSelectedItem());

或者您可以将您的方法声明更改为对象并在那里进行转换:

public void setState(Object state){
    if(state instanceof State){
        State realState = (State)state;
        ...
    }
}
于 2012-12-20T19:50:02.450 回答