代码之家  ›  专栏  ›  技术社区  ›  walters

在JFrame上的JPanel中显示JComponent

  •  3
  • walters  · 技术社区  · 15 年前

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

    以下操作不起作用。

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

    但是如果我把JComponent添加到JFrame中 frame.add(component, BorderLayout.CENTER);

    有什么想法吗

    2 回复  |  直到 15 年前
        1
  •  5
  •   jjnguy Julien Chastang    15 年前

    A JPanel 的默认布局是 FlowLayout

    简单地做:

    panel.add(component);
    

    或者,执行以下操作:

    panel.setLayout(new BorderLayout());
    panel.add(component, BorderLayout.CENTER);
    
        2
  •  2
  •   camickr    15 年前

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

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

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