-1

我正在创建一个 MDI 应用程序。我已将所有内部框架添加到桌面窗格。我的问题是将所有可见的内部框架作为菜单项添加到“窗口”菜单。当从菜单中选择另一个框架时,它应该设置焦点。而且我必须在桌面窗格上多次调用相同的,并且菜单项中的每个都应该相同请帮助我,我只需添加组件侦听器,每次创建事件时我都会调用一个函数,函数的内容是

enter code here
JCheckBoxMenuItem menu=new JCheckBoxMenuItem(); 
             String mnu = null;
             String title=null;
             for(int i=0;i<DesktopPane.getAllFrames().length;i++)
            {    int no=1;
                 JInternalFrame frame=(JInternalFrame) DesktopPane.getComponent(i);

                 String tit=frame.getTitle();
                 if(tit.contains(".")){
                    title=tit.substring(2,tit.length());
                 }
                 else{
                     title=tit;
                     }
                 if(windows.getItemCount()>0)
                  {
                    for(int j=0;j<windows.getItemCount();j++)
                    {
                         JCheckBoxMenuItem m=(JCheckBoxMenuItem) windows.getMenuComponent(j);
                         String s=m.getText();
                         String[] d=s.split(".",2);
                         String y=d[1];

                         if(y.equals("."+title))
                         {
                             if(j==0){
                             no=no-1;
                         }
                         no=no+1;
                     }
                }
                  mnu=no+"."+title;
              }
            else {
                  mnu=no+"."+title;
            }
          if(!frame.getTitle().contains(".")){
               frame.setTitle(no+"."+title);
          }
          menu.setText(mnu);
            buttonGroup1.add(menu);
            windows.add(menu);
            if(i==DesktopPane.getAllFrames().length-1)
            {
                 menu.setState(true);
             }
         }
}
4

2 回答 2

1

您可以简单地将 ContainerListener 添加到 JDesktopPane。因此,每次将内部框架添加到 JDesktopPane 或从 JDesktopPane 中删除时,您都会收到通知,因此您可以相应地修改菜单。

菜单的每个菜单项都可以与 JInternalFrame 相关联,setSelected(true)当单击菜单项时,您只需调用相关联的内部框架。

于 2013-08-20T11:44:25.250 回答
0

我认为你应该看看thisthis。只需调用 JDeskoptPane.getAllframes() 来获取帧,然后调用 JInternalFrame.setSelected(true) 来聚焦。要观看帧添加删除,您可以使用侦听器。

于 2013-08-20T11:37:48.693 回答