如何在java中将所有可见的jinternalframe从桌面窗格列表到窗口菜单

时间:2013-08-20 11:30:47

标签: java swing jinternalframe jmenuitem jdesktoppane

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

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);
             }
         }
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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