MyJPanel(JPanelを拡張)を持っています。各MyJPanelオブジェクトにはメソッドGetID()があります。作成するときは、コンストラクターでIDを設定し(ただし、メソッドSetID()もあります)、サイズを設定してから、Jscrollpaneを作成し、JInternalFrameに追加します。すべてのフレームはにありArrayList<JInternalFrame> arr
ます。
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);
フレームを削除するには、AddFrameListenerとメソッド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
}
}
しかし、1)MyJPanelがJScrollPaneにあるため、フレームの1つが削除されたときに、JInternalFramesの配列内のMyJPanelsの値をリセットする方法がわかりません。メソッドSetID2)JScrollPaneはJInternalFrameにあります3)JInternalFrameは配列にあります。にメソッドSetID()はありませんarr.get(i)
。