gpt4 book ai didi

java - 将 JFrame 插入 Swing 中的选项卡

转载 作者:行者123 更新时间:2023-12-01 23:22:04 27 4
gpt4 key购买 nike

我已经有一个给定的 JFrame 框架,我想将其显示(插入)到 JTabbedPanetab 中,但是像这样明确地不可能:

frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mainTabs.addTab("Editor", null, frame, null);

错误是:

java.lang.IllegalArgumentException: adding a window to a container

我尝试了一些解决方案,例如将框架插入到 JPanel 中,但还是徒劳。我有将其转换为 InternalJFrame 的想法,但我对此没有任何想法。

是否有插入该框架的解决方案?

更新:

我尝试过这个解决方案:

 mainTabs.addTab("Editor", null, frame.getContentPane(), null);

但是我丢失了添加的JMenuBar

最佳答案

您无法将 JFrame(或其他顶级组件)添加到另一个组件/容器,但您可以使用框架的 getContentPane() 方法来获取框架的主面板并将其添加到 JTabbedPane 选项卡。如下:

JTabbedPane tabs = new JTabbedPane();
JFrame frame = new JFrame();
frame.add(new JButton("button"));
tabs.addTab("1", frame.getContentPane());

您还可以将 JFrame 更改为 JPanel 并使用它。

了解JInternalFrame , top-level containers .

编辑:getContentPane()不会返回任何装饰或JMenuBar,您需要手动添加此组件,就像下一个菜单示例一样:

JTabbedPane tabs = new JTabbedPane();

JFrame frame = new JFrame();
JMenuBar bar = new JMenuBar();
bar.add(new JMenu("menu"));
frame.setJMenuBar(bar);
frame.add(new JButton("button"));

JPanel tab1 = new JPanel(new BorderLayout());
tab1.add(frame.getJMenuBar(),BorderLayout.NORTH);
tab1.add(frame.getContentPane());
tabs.addTab("1", tab1);

关于java - 将 JFrame 插入 Swing 中的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20488791/

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