【问题标题】:Setting panel at center of screen by using layout使用布局在屏幕中心设置面板
【发布时间】:2010-03-09 17:44:54
【问题描述】:

我尝试通过使用将子面板的位置设置在父面板的中心

parent_panel.setLayout(new BorderLayout());
parent_panel.add(child_panel, BorderLayout.CENTER);

但它被添加在水平屏幕的中间,但垂直在顶部。

我需要做什么才能将它垂直和水平添加到屏幕中心?

【问题讨论】:

  • 您能否提供更多代码。这两行看起来不错,但很高兴看到你所做的一切。
  • parent_panel 是否还有其他子项?你是否覆盖了 childPanel 的大小?
  • 我没有向主面板添加任何其他子面板,但我正在向上述子面板添加其他面板。而关于代码,我认为这只是与主面板中子面板的布局定位有关的两行。
  • 你想在顶部有填充吗?如果您有一个边框布局,并且您将某些内容设置为 CENTER,这仅意味着它将填充所有未被 NORTH、SOUTH、EAST 或 WEST 占用的空间。
  • @mmyers 我不想要顶部的任何东西,只想要那个空间空白。

标签: java swing layout


【解决方案1】:

如果我理解正确,您需要这样的界面:

+-------- 父面板 --------+ | | | | | +--- 子面板 ----+ | | | | | | | | | | | | | | | | | | +--------------------+ | | | | | +------------------------------+

...并且您没有其他组件被添加到父面板。

如果是这种情况,我知道你有两个选择(基于this question,我显然回答了):

  1. GridBagLayout 与空的GridBagConstraints 对象一起使用,如下所示:

    parent_panel.setLayout(new GridBagLayout());
    parent_panel.add(child_panel, new GridBagConstraints());
    
  2. 使用BoxLayout,像这样:

    parent_panel.setLayout(new BoxLayout(parent_panel, BoxLayout.PAGE_AXIS));
    Box horizontalBox = Box.createHorizontalBox(); 
    horizontalBox.add(Box.createHorizontalGlue()); 
    horizontalBox.add(child_panel); 
    horizontalBox.add(Box.createHorizontalGlue()); 
    Box verticalBox = Box.createVerticalBox(); 
    verticalBox.add(Box.createVerticalGlue()); 
    verticalBox.add(horizontalBox); // one inside the other
    verticalBox.add(Box.createVerticalGlue()); 
    

【讨论】:

    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 2011-01-26
    • 2023-01-09
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 2013-10-16
    • 2019-10-30
    相关资源
    最近更新 更多