【问题标题】:Displaying a JComponent inside a JPanel on a JFrame在 JFrame 上的 JPanel 内显示 JComponent
【发布时间】:2010-08-25 14:56:10
【问题描述】:

我无法在 JFrame 上的 JPanel 内显示 JComponent。

以下不起作用。

JComponent component = ...
panel.add(component, BorderLayout.CENTER);
frame.add(panel, BorderLayout.CENTER);

但如果我将 JComponent 添加到 JFrame[如 frame.add(component, BorderLayout.CENTER);],它会显示内容。

任何想法

【问题讨论】:

    标签: java swing jframe jpanel jcomponent


    【解决方案1】:

    JPanel 的默认布局是FlowLayout,因此您不必指定面板的中心。

    简单地做:

    panel.add(component);
    

    或者,做:

    panel.setLayout(new BorderLayout());
    panel.add(component, BorderLayout.CENTER);
    

    【讨论】:

    • 谢谢贾斯汀。这就是我所做的。当我尝试像这样将面板添加到 JFrame 时,我的问题就出现了:frame.add(panel, BorderLayout.CENTER);。它不显示组件。
    • @wal,那么你的第一条评论无效吗?
    • @Wal,好的。很高兴我能帮助你。
    【解决方案2】:

    默认情况下,JComponent 没有首选大小。

    默认情况下,JPanel 使用 FlowLayout。当您将组件添加到面板时,它将遵循组件的首选大小,即 0,因此您看不到它。

    默认情况下,用作 JFrame 内容窗格的面板使用 BorderLayout。因此,当您将组件添加到框架的内容窗格时,组件会自动调整大小以填充框架可用的空间,

    解决方案是给你的组件一个首选大小,然后它可以在任何面板上使用任何布局管理器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2022-01-12
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多