我是Java Swing的新手。我创建了一个简单的JFrame,如下面的代码中所示,但当行statusLabel = new JLabel("statusLabel", JLabel.WEST);
出现时,我在运行时收到以下发布的错误,当我对该行进行注释时,会出现JFrame。
请让我知道为什么这一行statusLabel = new JLabel("statusLabel", JLabel.WEST);
会导致错误。
public GUI() {
// TODO Auto-generated constructor stub
prepareGUI();
}
private void prepareGUI() {
// TODO Auto-generated method stub
mainFrame = new JFrame("Swing Example");
mainFrame.setSize(400, 400);
headerLabel = new JLabel("headerLabel", JLabel.CENTER);
statusLabel = new JLabel("statusLabel", JLabel.WEST);//this line when it is exist, causes errors
mainFrame.add(headerLabel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
public static void main(String[] args) {
GUI gui = new GUI();
}
错误:
Exception in thread "main" java.lang.IllegalArgumentException: horizontalAlignment
at javax.swing.JLabel.checkHorizontalKey(Unknown Source)
at javax.swing.JLabel.setHorizontalAlignment(Unknown Source)
at javax.swing.JLabel.<init>(Unknown Source)
at javax.swing.JLabel.<init>(Unknown Source)
at test.GUI.prepareGUI(GUI.java:23)
at test.GUI.<init>(GUI.java:15)
at test.GUI.main(GUI.java:31)
更新:
现在使用.LEFT之后,假设放置在.CENTER的文本消失了。为什么会这样?
答案 0 :(得分:2)
这不是对齐的有效参数。
来自API:
horizontalAlignment - 定义的以下常量之一 SwingConstants:LEFT,CENTER,RIGHT,LEADING或TRAILING。
编辑 - 您还将两个JLabel添加到JFrame的默认位置,在您的情况下,它将是BorderLayout.CENTER。这就是你的JLabel不可见的原因。修改JFrame的布局,或将JLabel放在默认BorderLayout中的不同位置。更多信息:http://docs.oracle.com/javase/tutorial/uiswing/layout/border.html
答案 1 :(得分:1)
JLabel.WEST
public JLabel(String text, int horizontalAlignment)
使用指定的文本和水平创建JLabel实例 对准。标签在其显示区域垂直居中。
参数: text - 标签显示的文本 horizontalAlignment - SwingConstants中定义的以下常量之一:LEFT,CENTER,RIGHT,LEADING或TRAILING。
horizontalAlignment的唯一选项是LEFT, CENTER, RIGHT, LEADING or TRAILING
所以在你的情况下使用JLabel.LEFT
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以更改此声明
statusLabel = new JLabel("statusLabel", JLabel.WEST);
到
statusLabel = new JLabel("statusLabel", SwingConstants.WEST);
通知
import javax.swing.SwingConstants;