这是一个功能:
/**
* Creates an instance of a JLabel with the given arguments
* @param text The text to be displayed on the Label
* @param font The font of the label
* @param bold set to true if you want the label's text to be bold
* @param fontSize The size of the font to be rendered
* @param alignment An alignment (E.g. CENTER_ALIGNMENT)
* @param verticleAlignment an optional argument to allow one to choose the Y alignment
* **/
public JLabel createLabel(String text, String font, boolean bold, int fontSize, float alignment, float...verticleAlignment){
JLabel label = new JLabel(text);
label.setFont(new Font(font, bold ? Font.BOLD : Font.PLAIN, fontSize));
label.setAlignmentX(alignment);
if(verticleAlignment.length > 0){
label.setAlignmentY(verticleAlignment[0]);
}
return label;
}
出于某种原因,无论我在varArg verticleAlignment中输入什么,它实际上都不适用?
add(createLabel("ChatBytes™ - Do not steal.", "Arial", false, 12, CENTER_ALIGNMENT, BOTTOM_ALIGNMENT));
任何人都可以看到它忽略我的函数的setYAlignment部分的原因吗?
答案 0 :(得分:5)
作为替代方案,请考虑nested layout。在下面的示例中,相关标签会添加到SOUTH
的{{1}}区域,BorderLayout
的默认区域,并且您的登录面板的占位符会添加到JFrame
。检查每种方法的调整大小行为是否合适。
附录:我希望[学习] CENTER
被忽略的原因。
正如How to Use BoxLayout: Box Layout Features中所述,“当setAlignmentY()
从上到下排列组件时,...容器底部会出现任何额外空间。”这解释了您原来的observation并更正了solution。
在API中,请注意setAlignmentX()
“设置垂直对齐方式”和setAlignmentY()
“设置水平对齐方式。”在此上下文中, vertical 表示从上到下布局的垂直轴,例如BoxLayout
,而水平表示左侧的水平轴 - 右侧布局,例如BoxLayout.Y_AXIS
。在How to Use BoxLayout: Fixing Alignment Problems中,BoxAlignmentDemo
将两者进行对比。在从左到右的布局中,如下图所示,BoxLayout.X_AXIS
用于调整相对于水平布局轴的垂直定位。在自上而下的布局中,setAlignmentY()
根本没有效果。
setAlignmentY()
答案 1 :(得分:3)
使用
add(Box.createVerticalGlue());
创建一个垂直空间,将组件推送到JFrame的底部