Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置方法的状态_Java_Swing_Enums_Jcombobox - Fatal编程技术网

Java 设置方法的状态

Java 设置方法的状态,java,swing,enums,jcombobox,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 然后我得到了另一个类的对象,它使用枚举状态 CallmeClass obj; 当我试图用JComboB

在我的GUI中,我有

@Override
public void actionPerformed(ActionEvent ae) { 
state = new JComboBox(EnumStates.values());
state =(JComboBox)ae.getSource()
state.getSelectedItem() //this returns what I want 
然后我得到了另一个类的对象,它使用枚举状态

CallmeClass obj;
当我试图用JComboBox的结果设置枚举的状态时,如下所示

  obj.setState(state.getSelectedItem());
我得到编译错误

1。必需状态但找到对象


因此,我的问题是
是否有一种方法可以使setState作为参数状态.getSelectedItem(),而无需更改方法setState()的返回类型或在gui中重新声明枚举
。谢谢。

我猜您对
设置状态的声明是这样的:

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

请尝试将state.getSelectedItem()强制转换为所需的state对象显示您的代码和确切的编译器错误消息。您显示的三行代码已经没有多大意义了。