我正在尝试编写一个多文档界面程序绘图应用程序。绘图应用程序的每个实例都显示在 JDesktopane 内的 JInternalFrame obj 中。用户可以通过“File-New Window”(一个 JMenu)创建多个子窗口绘图应用程序。
对于创建的每个内部框架,都会创建一个相应的描述性 JMenuitem 并将其添加到 JMenu(窗口)。
JMenu Window 命令然后显示打开的窗口列表并允许用户选择一个窗口。
这是我有心理障碍的地方,有没有办法可以将 JMenuitem 链接到创建的窗口?
06/07/13 感谢您的建议。每次实例化一个 ArrayList 时,我都会向 ArrayList 添加一个 internalFrame,然后通过操作字符串标题以获取帧号从数组中检索它(参见下面的代码),但是 ArrayList 大小始终为 1,并且始终是最后一帧实例化....有什么想法吗?
windowList = new ArrayList();
windowList.add(internalFrame);
//windowMenuItem = new ArrayList(200);
windowMenuItem.add(newWindow);
//picNumber = new int[200];
//allow suer to select internalFrame according to menuItem selceted
newDrawFrame.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent menuEvent) {
//call method to handle this event
winItemActionPreformed(menuEvent);
//frames[openFrameCount].setSelected(true);
}//end actionPerformed
}//end annon actionListener class
);//end method calal to actionListener
然后 winItemActionPerfomed 方法...
//handle menu selction for a internalFrame and set to front/on focus
public void winItemActionPreformed(ActionEvent menuEvent){
//get selected menuItem via event and casdt to JMenuItem type
//manipulate returned String object to retrive frame number
JMenuItem tempItem = (JMenuItem) menuEvent.getSource();
String tempItemString = tempItem.getText();
int getFrameNumber = tempItemString.lastIndexOf("#");
String frameNumberSelected = tempItemString.substring(getFrameNumber+1);
//convert String to int representong frameNumber in ArrayList
int frameNumber;
try
{
frameNumber = Integer.parseInt(frameNumberSelected);
JInternalFrame tempFrame = (JInternalFrame) windowList.get(frameNumber-1);
tempFrame.toFront();
}//end try
catch (NumberFormatException ex) {
System.err.println("No Such Number.");
}//end catch
}//end winActionPreformed