JTabbedPane - вкладка со ссылкой на кнопку закрытия

Я хочу создать интерфейс с вкладками в JAVA, с кнопкой закрытия на каждой вкладке. Для этого я использовал следующий класс:ButtonTabComponent

У меня есть кнопка в моем графическом интерфейсе, которая создает новую вкладку. Позволять'скажем, я нажимаю кнопку «Новая вкладка» 4 раза, поэтому создаются 4 вкладки:

| вкладка 0 | вкладка 1 | вкладка 2 | вкладка 3 | (каждая вкладка содержит кнопку закрытия)

Теперь я решаю, что хочу закрыть вкладку 1, и возникает проблема, когда я закрываю среднюю вкладку, все индексы переупорядочиваются - это означает, что:

| вкладка 0 | вкладка 2 | вкладка 3 | (вкладка 2 будет иметь индекс 1)

Если я попытаюсь сейчас создать новую вкладку, вкладка будет создана, но новая вкладка:

| вкладка 0 | вкладка 2 | вкладка 3 | вкладка 1 | (на вкладке 1 нет кнопки закрытия)

Если я снова нажму на новую вкладку, я получу:

| вкладка 0 | вкладка 2 | вкладка 3 | вкладка 1 | вкладка 4 | (вкладка 4 в порядке, она имеет кнопку закрытия)

Теперь я решаю закрыть вкладку 2 и получаю:

| вкладка 0 | вкладка 3 | вкладка 1 | вкладка 4 | (вкладка 3 теперь будет иметь индекс 1)

Если я создаю новую вкладку:

| вкладка 0 | вкладка 3 | вкладка 1 | вкладка 4 | вкладка 1 | (последняя вкладка снова не имеет кнопки закрытия).

Я полагаю, что это вызвано индексом, и я прочитал в аналогичном вопросе, здесь на stackoverflow:stackoverflow.com/questions/15312252/jtabbedpane-arrayindexoutofboundsexception что возможное решение будет:

Передать слушателю ссылку на элемент вкладки, а не его индекс на панели вкладок.

Я не уверен, как это сделать. Если у кого-нибудь есть подсказка, я бы очень, очень признателен. Мне нужно сохранить твердую ссылку для каждой вкладки, поскольку каждая вкладка откроет файл, и у него будет возможность сохранить файл, и, очевидно, индекс вкладки не является надежным.

РЕДАКТИРОВАТЬ: способ добавить новую вкладку в моем коде:

...//main class
private final JTabbedPane pane = new JTabbedPane();
//I am using an array to store the tabs created
//I initialize the array with false. the idea was that when a new tab get created, one item in the array
//gets the true value. when the tab is closed, the array item (based on the index) is set back to false
arrTabList = new boolean[10];
        for(int i=0; i

Ответы на вопрос(3)

Ваш ответ на вопрос