当前位置: 首页 > 面试题库 >

将JFrame插入Swing中的标签

公德明
2023-03-14
问题内容

我有一个给定的JFrame frame,我想将其显示(插入)到的tabJTabbedPane,但这不可能像这样明确地实现:

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但是对此我一无所知。

那是插入的任何解决方案frame吗?

更新

我尝试过这种解决方案:

 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,顶层容器。

编辑: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);


 类似资料:
  • 我一直在使用JFrame进行我的项目,但遇到了一个问题。这是我的代码: 还有,这是我的主要。java: 我想做的是向面板添加文本字段和标签。但是,当我运行此代码时,它会显示:结果 如果我在框架中添加标签和文本字段,效果很好。你能帮我解决这个问题吗?非常感谢你。

  • 使用Java图形,我试图画一个简单的矩形。 作为它运行良好,但当我使用它在上显示时,矩形来了,但有一些不寻常的背景 这是编码: 然后我尝试使用使用这两个类,但在这种情况下,矩形根本不显示。 和DisplayItems。java: 任何人都可以帮助我在任何摆动容器上显示图形组件,例如JPanelJTextArea'等。

  • 问题内容: 我发现了一个开源应用程序,该应用程序创建了一个JFrame来显示一些内容。我想将此JFrame “嵌入” 到applet中,因此Jframe中显示的所有内容都将显示在applet中- 这可能吗? 谢谢你的帮助! 问题答案: 创建框架的实例。 获取框架的内容窗格。 将内容窗格添加到小程序。

  • 问题内容: 我只是编写了一个简单的代码,希望在主框架上显示一个文本字段和一个按钮,但是运行全部后,我看到的是文本字段。 如果我在文本字段后编写按钮的代码,则仅显示按钮。 知道为什么吗? 问题答案: 将组件添加到JPanel,然后将该面板添加到JFrame的ContentPane。

  • 问题内容: 如何获得的? 我想获取的屏幕截图(以供以后在我的应用程序中使用)。目前,这是通过使用机器人进行截屏来指定相关对象的坐标和尺寸来完成的。 但是,我相信有一种更好的方法:默认情况下,组件在将其自身绘制到屏幕上之前,将它们自己作为图像呈现到双缓冲区中。 有没有办法从组件中获取这些图像? 问题答案: ComponentImageCapture.java 另见 上面显示的代码假定组件在渲染之前已

  • 我一直在关注Oracle的JLayeredPane教程,但它们的布局方式让我感到困惑,也没有理解我想要做什么。 我有一个应用程序,到目前为止还没有层的概念。所有东西都在JFrame中的一个单层中布局。