JPanel从窗口消失

时间:2013-02-26 02:53:26

标签: java swing jtable jpanel jdialog

下面的SSCCE是一个扩展JPanel的类。 JPanel是日历的基本轮廓(为了简单起见,我将其删除了),它由JButton个组件,JLabel和{{1}组成。 }。当我将此框架添加到窗口(即JTable)时,它看起来正常。但是,当我添加另一个组件时,它会消失。为什么会发生这种情况,我怎么能不发生这种情况呢?

JDialog

1 个答案:

答案 0 :(得分:4)

JDialogs和所有顶级窗口默认使用BorderLayout。当您向其添加组件(实际上是其contentPane)而未指定位置时,默认情况下将其添加到BorderLayout.CENTER位置。每当添加新组件时,您都会覆盖以前添加的组件。您将需要了解可供您使用的布局,然后将它们用于最佳状态。

例如,

  dialog.add(panel);
  dialog.add(new JLabel("Hello", SwingConstants.CENTER), BorderLayout.SOUTH);
}

接下来,您要避免设置任何内容的大小,并确保pack()允许此级别的顶级窗口。