【发布时间】:2014-10-08 08:39:39
【问题描述】:
对于这种特殊情况,我如何在面板上使用Borderlayout.EAST,面板具有不同的布局,即BoxLayout 布局管理器?难道面板本身必须要有BorderLayout 管理员才能使用BorderLayout.CONSTANT?
JPanel jp1 = new JPanel();
jp1.setLayout(new BoxLayout(jp1, BoxLayout.X_AXIS));
JPanel jp2 = new JPanel(new GridLayout());
jp1.add(jp2, BorderLayout.EAST); //This worked even though jp1 is a BoxLayout, how did it use BorderLayout?
【问题讨论】:
-
BorderLayout.EAST 只是一个常量,由 Component.add 方法支持
-
是什么让您认为它“有效”?你的意思是为什么它编译?请定义“工作”
-
@peeskillet 是的,它是如何编译的?
-
它将编译,因为
Container.add允许(组件,对象)。这是否意味着在这种情况下将使用约束?不,这就是为什么我问你为什么认为它“有效”。它将编译,但您不会看到BorderLayout.EAST效果,就像布局设置为BorderLayout时一样。 tashgods 的回答解释了更多。 -
GridBagLayout也是如此。使用此布局时,您指定GridBagConstraints作为第二个Object参数。对于 sameadd方法,每个Container都有。但它只有在布局管理器设置为GridBagLayout时才有效。您可以添加(并编译)您的示例,将GridBagConstraints作为第二个参数传递,但这并不意味着约束将生效
标签: java swing user-interface layout-manager border-layout