Это потому, что JComboBox.html.getSelectedItem () возвращает объект
public Object getSelectedItem()
И ваш метод ожидает строку
public void addTopicToListner(String t)
Если вы на 100%убедитесь, что содержимое вашего комбинированного списка является строкой, вам просто нужно привести его:
a.addTopicToListner( (String) topicCombobox.getSelectedItem());
И это все.
Этот пример кода воспроизводит именно вашу ошибку компиляции:
class StringAndObject {
public void workWithString( String s ) {} // We just care about
public void workWithObject( Object o ) {} // the signature.
public void run() {
String s = ""; // s declared as String
Object o = s; // o declared as Object
// works because a String is also an Object
workWithObject( s );
// naturally a s is and String
workWithString( s );
// works because o is an Object
workWithObject( o );
// compiler error....
workWithString( o );
}
}
Вывод:
StringAndObject.java:19: workWithString(java.lang.String) in StringAndObject cannot be applied to (java.lang.Object)
workWithString( o );
^
1 error
Как видите, последний вызов (workWithString(o)
) не компилируется, даже если он является объектом String.Оказывается, компилятор знает только, что o
был объявлен как Object
, но у него нет способа узнать, является ли этот объект строкой или чем-то другим (например, Date
).
Надеюсь, это поможет.