Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java align JLabel位于JPanel的中心_Java_Swing_Jpanel_Jlabel_Layout Manager - Fatal编程技术网

Java align JLabel位于JPanel的中心

Java align JLabel位于JPanel的中心,java,swing,jpanel,jlabel,layout-manager,Java,Swing,Jpanel,Jlabel,Layout Manager,我的应用程序顶部有一个栏,在JLabel的两侧都有许多按钮。按钮的可见性取决于用户正在执行的当前任务,并且按钮的文本之一也可能会根据当前状态而改变 我想做的是让一些按钮粘在JPanel的左侧,JLabel的中心在JPanel的正中心,其余的按钮在JPanel的右侧 到目前为止,我已经使用各种方法和布局管理器成功地将按钮粘贴到左侧和右侧,但我无法使JLabel的中心位于JPanel的死中心。我所能得到的最好的结果是标签离中心足够近,但当按钮设置为可见或其文本更改时,标签会四处移动 是否可以强制JL

我的应用程序顶部有一个栏,在JLabel的两侧都有许多按钮。按钮的可见性取决于用户正在执行的当前任务,并且按钮的文本之一也可能会根据当前状态而改变

我想做的是让一些按钮粘在JPanel的左侧,JLabel的中心在JPanel的正中心,其余的按钮在JPanel的右侧

到目前为止,我已经使用各种方法和布局管理器成功地将按钮粘贴到左侧和右侧,但我无法使JLabel的中心位于JPanel的死中心。我所能得到的最好的结果是标签离中心足够近,但当按钮设置为可见或其文本更改时,标签会四处移动

是否可以强制JLabel保持死点

注意:按钮永远不会变得足够大,以满足JLabel的任一边缘,因此这不是问题。

使用。添加带有BorderLayout.CENTER约束的JLabel,并添加一对带有BorderLayout.EAST和BorderLayout.WEST约束的JPanel。将其他按钮添加到相应的JPanel


要使文本居中显示,您还需要将标签的水平对齐设置为JLabel.CENTER。

您还可以使用带有
X\u轴的
BoxLayout
布局,并将其添加到容器中

编辑:这里有一个例子

panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.add(Box.createHorizontalGlue());
panel.add(innerPanel);
panel.add(Box.createHorizontalGlue());

在我看来,你需要标签以其首选的大小显示,然后你需要一个左右面板来均匀地填充窗口中剩余的可用空间

你可以使用这个类


可能我正在发帖,但是setAlignmentX(java.awt.Component.CENTER\u ALIGNMENT)和setAlignmentY(java.awt.Component.CENTER\u ALIGNMENT)可能会有帮助

setAlignmentX(java.awt.Component.CENTER_ALIGNMENT)


如果与必须居中的元素一起使用,可能会有所帮助,例如JPanel

我已经尝试过了,但由于东面板和西面板的大小不同,面板中的按钮数量和按钮上的文本可能会发生变化,因此主面板中的中心实际上没有居中。我还没有尝试相对布局,但是GridBagLayout与BorderLayout存在相同的问题。左面板和右面板的宽度不相等,因此中心面板没有真正居中。RelativeLayout工作正常,更愿意使用默认布局管理器,但看起来他们无法处理看似琐碎的任务。谢谢。刚刚发现只有当
面板
的最小和最大尺寸设置为其首选尺寸时,此功能才有效。
setAlignmentX(java.awt.Component.CENTER_ALIGNMENT)
setAlignmentY(java.awt.Component.CENTER_ALIGNMENT)