JPanel内容窗格混乱

Lew*_*rin 5 java swing jcomponent layout-manager jmenubar

我正在学习Java Swing,并在菜帧中添加了一个menuBar.默认情况下应该调用jframe.getContentPane().add(child).当我运行脚本时,menuBar没有出现.但是如果有意义的话,按钮位于最顶部的"y = 0".

然后我意识到我的错误,我实际上必须把菜单放在菜单栏中.然后menuBar出现了.这让我思考......"menubar""contentpane"实际上是2个面板吗?这让我感到困惑.因为这很像一个小组.但是getContentPane()返回一个Container,而不是一个JPanel对象,所以我很困惑.

如果是这样,这是否意味着直接转储到框架中的唯一东西就是Jpanel对象?因此,JButtons,JLabel不是直接在框架中...这是否意味着,jpanels是"嵌套的"?还有一件令我困惑的事情.如果jpanel可以控制事物的位置,那么LayoutManager是什么用的?:谢谢,请回答好像是2岁的老人问为什么天空是蓝色的,哈哈;)

Hov*_*els 10

一些随意的想法:

  • 是的,JPanels和其他组件通常是"嵌套"的.这是对Swing/AWT布局管理者的深刻理解至关重要的地方.
  • 虽然JFrame返回的类型getContentPane()在技​​术上是一个Container,但它也是一个JPanel(最终从Container继承).
  • 我相信你可以制作任何派生自ContainerPane的东西,但是你需要注意它是不透明的.

  • 你开始时有一个JPanel.如果添加JMenuBar,则会有相同的JPanel,现在是JMenuBar,而不是两个JPanel.我不明白你的最后一个问题 - 为什么布局管理器不同. (2认同)