Извините, что я придирчив, но это:
class CDinventoryItem extends JFrame implements Comparable <CDinventoryItem>
обладает запахом анти-шаблонного дизайна класса "Бог". Вы просите, чтобы это был CDinventoryItem, чтобы хранить коллекцию CDinventoryItems, отображать эту коллекцию элементов в графическом интерфейсе и быть корневым контейнером этого графического интерфейса, а теперь выводить эту информацию на диск. Другими словами, вы просите этот бедный класс сделать слишком много.
Прежде чем даже задуматься о создании графического интерфейса для отображения этой информации или написании кода для вывода чего-либо в файл, вам необходимо серьезно реорганизовать его.
Рекомендую, по крайней мере, вы подумаете об этом:
1) Создайте класс CDInventoryItem, который Comparable, и имеет поля для хранения этой информации - заголовок строки, int itemNumber, int numberofUnits, double unitPrice, String жанр - и все.
2) Создайте другой класс для управления коллекцией вышеупомянутого с помощью метода add, метода remove, метода listAll (), метода sort, метода поиска, int для ссылки на текущий CDInventoryItem в коллекции и метод получения для получения текущего элемента, метод для получения элементов next () и previous (), а также для увеличения или уменьшения этого индекса int, ...
3) Класс для поддержки ввода-вывода для чтения и записи CDInventoryItems в файл и из файла, возможно, с использованием сериализации (тогда CDInventoryItem должен быть сериализуемым).
4) И тогда, и только тогда вы должны запустить GUI-часть своей программы. В графическом интерфейсе должны использоваться перечисленные выше классы в качестве базовой логики.
Если вы сделаете это, ваше кодирование будет проходить гораздо более гладко. Если нет, у вас впереди куча ужасных отладок.