У меня есть MyJPanel (расширяет JPanel). Каждый объект MyJPanel имеет метод GetID(). Когда я его создаю, я устанавливаю ID с помощью конструктора (но также есть метод SetID()), задает размер, а затем создаю Jscrollpane и добавляю его в JInternalFrame. Все кадры находятся в ArrayList<JInternalFrame> arr
.Получить метод из содержимого JInternalframe
JInternalFrame frame = new JInternalFrame("Inner frame",true,true,true,true);
final MyJPanel panel = new MyJPanel(f.getAbsolutePath(),count);
panel.setSize(panel.getWidth()/6,panel.getHeight()/6);
JScrollPane pane = new JScrollPane(panel);
pane.setPreferredSize(new Dimension(theDesktop.getWidth()/2, theDesktop.getHeight()/2));
frame.getContentPane().add(pane, BorderLayout.CENTER);
Чтобы удалить рамку добавить добавить FrameListener и метод internalFrameClosing метод
public void internalFrameClosing(InternalFrameEvent e) {
int index = panel.GetID();//get index of panel окна
if (index == arr.size())
arr.remove(index);//remove last element
else{
//reset all indexes of JInternalFrames' MyJPanel
}
}
Но я не знаю, как сбросить значения MyJPanels в массиве JInternalFrames, когда один из кадров был удален из-за 1) MyJPanel находится в JScrollPane. метод SetID 2) JScrollPane находится в JInternalFrame 3) JInternalFrame находится в массиве. Нет метода SetID() в arr.get(i)
.