Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中列出从桌面到窗口菜单的所有可见内部框架_Java_Swing_Jinternalframe_Jmenuitem_Jdesktoppane - Fatal编程技术网

如何在java中列出从桌面到窗口菜单的所有可见内部框架

如何在java中列出从桌面到窗口菜单的所有可见内部框架,java,swing,jinternalframe,jmenuitem,jdesktoppane,Java,Swing,Jinternalframe,Jmenuitem,Jdesktoppane,我正在创建一个MDI应用程序。我已将所有internalframe添加到desktoppane。 我的问题是将所有可见的内部框架作为菜单项添加到“窗口”菜单中。当从菜单中选择另一帧时,它应该设置焦点。 我必须在桌面窗格上多次校准相同的菜单项,并且每个菜单项都应该相同 请帮帮我 我只是添加了组件侦听器,每次创建事件时调用一个函数,函数的内容是 enter code here JCheckBoxMenuItem menu=new JCheckBoxMenuItem();

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

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);
             }
         }
}
在此处输入代码
JCheckBoxMenuItem菜单=新建JCheckBoxMenuItem();
字符串mnu=null;
字符串标题=null;
对于(int i=0;i0)
{

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

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


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

不鼓励只包含链接的答案,并且您提供的其中一个链接指向不应直接调用的方法。此外,它不回答问题。