gpt4 book ai didi

java - 如何按照我添加的顺序获取 JInternalFrame

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:21 26 4
gpt4 key购买 nike

我尝试访问我的 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

是否有任何其他方法可以按照我将其添加到桌面 Pane 的顺序获取内部框架?

最佳答案

    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 - 如何按照我添加的顺序获取 JInternalFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com