下面的SSCCE是一个扩展JPanel
的类。 JPanel
是日历的基本轮廓(为了简单起见,我将其删除了),它由JButton
个组件,JLabel
和{{1}组成。 }。当我将此框架添加到窗口(即JTable
)时,它看起来正常。但是,当我添加另一个组件时,它会消失。为什么会发生这种情况,我怎么能不发生这种情况呢?
JDialog
答案 0 :(得分:4)
JDialogs和所有顶级窗口默认使用BorderLayout。当您向其添加组件(实际上是其contentPane)而未指定位置时,默认情况下将其添加到BorderLayout.CENTER位置。每当添加新组件时,您都会覆盖以前添加的组件。您将需要了解可供您使用的布局,然后将它们用于最佳状态。
例如,
dialog.add(panel);
dialog.add(new JLabel("Hello", SwingConstants.CENTER), BorderLayout.SOUTH);
}
接下来,您要避免设置任何内容的大小,并确保pack()
允许此级别的顶级窗口。