如何强制文本转到面板按钮?

Rom*_*man 3 java user-interface swing text alignment

目前我有以下代码,工作正常.

label = new JLabel(panelLabel,SwingConstants.CENTER);
outputPanel.add(label,BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)

我将文本放在面板的中心(就左右位置而言,也就是上下方面).

现在我想将位置设置为底部(并以"左右"为中心).我尝试在第一行使用SOUTH而不是CENTER.编译器没有抱怨,但在执行期间我得到了IllegalArgumentException: HorizontalAlignment.那是什么?

Gno*_*upi 5

您正在使用的JLabel构造函数是JLabel(String label, int horizontalAlignement).

正如javadoc中定义的那样,这个int应该只有某些值:

JLabel public JLabel(String text,int horizo​​ntalAlignment)
使用指定的文本和水平对齐方式创建JLabel实例.标签在其显示区域中垂直居中.

参数:
text - 标签显示的文本.
horizo​​ntalAlignment - SwingConstants中定义的以下常量之一:LEFT,CENTER,RIGHT,LEADING或TRAILING.

此值设置文本在JLabel 对齐的位置.你不能在这里使用"SOUTH",这就是你得到"InvalidArgument"异常的原因.


如果你想使你在标签底部的文字,你必须使用参考setVerticalAlignment(INT) ,用Swingconstants.BOTTOM.假设您的标签居中并且可能在您的面板上占据很大的高度.

如果对此面板使用BorderLayout,则可能需要尝试添加标签BorderLayout.SOUTH,作为布局管理器的提示.这会将标签粘贴到底部,并且它将具有最小高度(显示文本所需的高度).在这种情况下,文本的垂直对齐并不重要.