Swing JLabel水平定位未按预期工作
下面是一个JFrame,我打算用一系列具有以下属性的JLabel来展示它:Swing JLabel水平定位未按预期工作,swing,jlabel,layout-manager,Swing,Jlabel,Layout Manager,下面是一个JFrame,我打算用一系列具有以下属性的JLabel来展示它: 垂直堆放 水平居中 绿色边界 白色背景 蓝色文本 但我得到的却是: 垂直堆叠的蓝色文本、绿色边框可以正常工作,但白色背景和水平居中则不行。我还以为标签会横跨JPanel的整个宽度 我做错了什么 编辑:缺少关于背景色的信息。所以我剩下的问题是关于BoxLayout和组件在另一个轴上的定位 将以下行添加到addLabel(): 有关完整示例,请参见 稍后添加: 我找到了简单的解决方案: label.setMaxim
- 垂直堆放
- 水平居中
- 绿色边界
- 白色背景
- 蓝色文本
编辑:缺少关于背景色的信息。所以我剩下的问题是关于BoxLayout和组件在另一个轴上的定位
将以下行添加到
addLabel()
:
有关完整示例,请参见
稍后添加:
我找到了简单的解决方案:
label.setMaximumSize(new Dimension(200, 200));
//label.setAlignmentX(CENTER_ALIGNMENT);//aligns label itself
label.setHorizontalAlignment(SwingConstants.CENTER);//aligns text inside the label
这同样有效,但您的BorderLayout解决方案似乎更合适。好的,这让我对中了。。。谢谢有没有办法使JLabel扩展到面板的全宽?或者这是不是其中一件事情没有这样做?@Jason S对于扩展,您可能选择了错误的布局。进行扩展似乎是布局任务,而BoxLayout无法扩展单个组件。我使用BorderLayout和BorderLayout.CENTER布局将每个JLabel包装在一个JPanel中。这似乎有效。我使用的是miglayout,其中没有任何东西可以用于像这样简单的东西。谢谢,节省了我一些时间+1
label.setAlignmentX(CENTER_ALIGNMENT);
label.setMaximumSize(new Dimension(200, 200));
//label.setAlignmentX(CENTER_ALIGNMENT);//aligns label itself
label.setHorizontalAlignment(SwingConstants.CENTER);//aligns text inside the label