Ваша проблема здесь связана с плохим знанием доступа к переменным экземпляра.
Предположим, что вы где-то создали свой объект ClassA
и начали его эксплуатировать. В какой-то момент значение JCombobox
будет изменено. Это означает, что его состояние все еще находится в экземпляре ClassA
.
В вашем методе печати вы создаете новый экземпляр CreateInvoiceTable
, для которого вы вызываете таблицу invoicetable
. Хотя вы ожидаете, что это даст вам возможность получить доступ к значению JCombobox
, которое находится внутри объекта ClassA
, это не так.
После создания экземпляра расширяющего класса вы фактически создадите его новый экземпляр, что означает новый JCombobox
. Это объясняет, почему при вызове getSelectedItem
в контексте второго класса возвращаемое значение является неправильным.
Я полагаю, что эта строка String custname =namecombo.getSelectedItem().toString();
фактически возвращает правильное значение, что поможет вам решить эту проблему.
Теперь мое лучшее предложение - просто прекратить расширение класса A из класса B. Поскольку ваш метод invoicetable
будет печатать только имя счета, просто передайте значение имени в качестве параметра в этом.
Я бы также предложил проверить доступность и наследование переменных, так как кажется, что эти понятия запутаны в вашем уме.
Надеюсь, это поможет.