Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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/3/arrays/12.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 如何按我添加的顺序获得JInternalFrame_Java_Arrays_Swing_Jinternalframe_Jdesktoppane - Fatal编程技术网

Java 如何按我添加的顺序获得JInternalFrame

Java 如何按我添加的顺序获得JInternalFrame,java,arrays,swing,jinternalframe,jdesktoppane,Java,Arrays,Swing,Jinternalframe,Jdesktoppane,我试图访问JDesktopPane中的JInternalFrame并使用getAllFrames方法 我只想按照添加到JDesktopPane中的顺序访问JInternalFrame。 例如,我添加了a、b、c frames[0] contain a frames[1] contain b frames[2] contain c 但我发现,如果我更改选择,数组中的内容将发生变化。 每次我改变我的选择。 阵列中选定的JInternalFrame将移动到顶部 例如,我选择b 阵列将成为 fram

我试图访问JDesktopPane中的JInternalFrame并使用getAllFrames方法

我只想按照添加到JDesktopPane中的顺序访问JInternalFrame。 例如,我添加了a、b、c

frames[0] contain a
frames[1] contain b
frames[2] contain c 
但我发现,如果我更改选择,数组中的内容将发生变化。 每次我改变我的选择。 阵列中选定的JInternalFrame将移动到顶部

例如,我选择b 阵列将成为

frames[0] contain b
frames[1] contain a
frames[2] contain c 
是否有其他方法可以按照我添加到Desktopane的顺序获取内部框架???

package org.app;
    package org.app;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;


public class MainFrame extends JFrame{
    private static final long serialVersionUID = 1L;    
    private JDesktopPane theDesktop;
    private List<JInternalFrame> frameList=new ArrayList<>();

public MainFrame()  {
    super("Internal Frame Demo");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(800,600);
    this.setJMenuBar(setMenubar());
    theDesktop=new JDesktopPane();
    this.add(theDesktop);
    this.setVisible(true);
}

public JMenuBar setMenubar()    {
    JMenuBar bar=new JMenuBar();
    JMenu addMenu=new JMenu("Add");
    JMenuItem newFrame=new JMenuItem("Internal Frame");
    newFrame.addActionListener(new MenuAction());
    addMenu.add(newFrame);
    bar.add(addMenu);
    return bar;
}

public JInternalFrame addInternalFrame()    {
    JInternalFrame jif=new JInternalFrame("Internal frame",true,true,true,true);
    jif.setSize(new Dimension(240, 300));       
    jif.addInternalFrameListener(new InternalFrameAdapter() {
        @Override
        public void internalFrameClosing(InternalFrameEvent e){             
            frameList.remove(e.getInternalFrame());                 
            System.out.println("from frame closing event");         
        }
    });
    jif.show();
    return jif;
}   
public JInternalFrame getInternalFrame(int index)   {
    return frameList.get(index);
}   
class MenuAction implements ActionListener  {
    @Override
    public void actionPerformed(ActionEvent e) {            
        JInternalFrame f=addInternalFrame();
        theDesktop.add(f);
        frameList.add(f);           
        System.out.println("from menu action");
    }           
}   
public static void main(String[] args){
    new MainFrame();
}
导入java.awt.Dimension; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 导入java.util.ArrayList; 导入java.util.List; 导入javax.swing.JDesktopPane; 导入javax.swing.JFrame; 导入javax.swing.JInternalFrame; 导入javax.swing.JMenu; 导入javax.swing.JMenuBar; 导入javax.swing.JMenuItem; 导入javax.swing.event.InternalFrameAdapter; 导入javax.swing.event.InternalFrameEvent; 公共类大型机扩展JFrame{ 私有静态最终长serialVersionUID=1L; 私人JDesktopPane theDesktop; 私有列表框架列表=新的ArrayList(); 公共主机(){ 超级(“内部框架演示”); 此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 这个。设置大小(800600); setJMenuBar(setMenubar()); theDesktop=新JDesktopPane(); 添加(desktop); 此.setVisible(true); } 公共JMenuBar setMenubar(){ JMenuBar=新的JMenuBar(); JMenu addMenu=新JMenu(“添加”); JMenuItem newFrame=新JMenuItem(“内部框架”); addActionListener(newMenuAction()); addMenu.add(newFrame); 添加(添加菜单); 返回杆; } 公共JInternalFrame addInternalFrame(){ JInternalFrame jif=新的JInternalFrame(“内部框架”,真,真,真,真); jif.设置尺寸(新尺寸(240300)); addInternalFrameListener(新的InternalFrameAdapter(){ @凌驾 公共无效internalFrameClosing(InternalFrameEvent e){ frameList.remove(例如getInternalFrame()); System.out.println(“从帧关闭事件”); } }); jif.show(); 返回jif; } 公共JInternalFrame getInternalFrame(int索引){ 返回frameList.get(索引); } 类MenuAction实现ActionListener{ @凌驾 已执行的公共无效操作(操作事件e){ JInternalFrame f=附加内部框架(); 在顶部添加(f); 框架清单。添加(f); System.out.println(“从菜单操作”); } } 公共静态void main(字符串[]args){ 新主机(); }

}

您始终可以创建和维护
ArrayList
。这就是一个例子。另请参见和。