【问题标题】:Centering a JPanel in a JFrame在 JFrame 中将 JPanel 居中
【发布时间】:2013-06-02 10:10:54
【问题描述】:

我有一个用于为我的游戏绘制菜单的 JPanel 和一个添加到其中的 JFrame,我必须将菜单添加到框架的中间,以便它在更高的分辨率下看起来一样好在较低的位置。我试过frame.add(menu, BorderLayout.CENTER)menu.setLocation(windowW / 2, windowH / 2) 但这些选项都不起作用。最简单的方法是什么?

【问题讨论】:

  • 使用LayoutManager的:总是!不要打电话给setLocation/setSize/setBounds,因为 LayoutManager 无论如何都会改变这一点(这是他们的工作)。谷歌“Java Swing LayoutManager 教程”并阅读 Oracle 教程。您将很快看到各种可能性

标签: java swing jframe centering jcomponent


【解决方案1】:

您需要调用方法frame.setLocationRealtiveTo(null)parameter 应该引用新框架的窗口。

编辑:认为我理解错了。您想将一个组件添加到 JFrame 到所有的中间。将JPanel 添加到JFrame 并将component 添加到JPanel (BorderLayout.Center)。

【讨论】:

    【解决方案2】:

    将 JComponent 定位在 JFrame 的中心

    使用GridBaglayout 不使用override GridBagConstraints,或使用BoxLayout 然后使用JComponent will be placed into center and isn't resizable with container

    【讨论】:

    • 我试着让它与这个代码一起工作:Box box = new Box(BoxLayout.X_AXIS); box.add(Box.createHorizontalGlue()); box.add(menu); box.add(Box.createHorizontalGlue()); frame.add(box);
    • 它确实放置了它,以便菜单从中间开始,但它会剪切菜单,以便它只显示菜单的 1/4。我该如何解决这个问题?
    • 如果我删除第二个 box.add(Box.createHorizontalGlue()); 它不会剪切菜单但它不会在中间
    • +1,使用 GridBagLayout 是最简单的方法。 @JavaProgrammer,您获得了工作示例。我们不知道为什么您的代码不起作用。您的代码中有错误。发布您的 SSCCE 来证明问题。
    • @Java Programmer 对不起,一切由你决定,没有人知道你的屏幕上显示了什么代码,拍摄到黑暗 == JFrame.setJMenu....
    猜你喜欢
    • 2015-03-23
    • 1970-01-01
    • 2011-11-05
    • 2012-04-07
    • 1970-01-01
    • 2011-09-22
    • 2012-05-24
    相关资源
    最近更新 更多